vivjson.statement (2025-03-29)
index
https://github.com/benesult/vivjson-python/tree/main/vivjson/statement.py

Statement for VivJson
 
Refer to:
- "Crafting Interpreters"
  https://craftinginterpreters.com/
Note that this code is made from scratch. The source code
of the above WEB site is not used.
 
Environment:
- Python 3.9 or later
 
License:
Copyright 2025 benesult
 
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.

 
Classes
       
builtins.object
Statement
Array
Binary
Blank
Block
Call
Callee
CalleeRegistry
Get
Identifier
Injection
Keyword
Literal
Loop
Parameter
Remove
Return
Set
Value

 
class Array(Statement)
    Array(values: list) -> None
 
Array data class
 
 
Method resolution order:
Array
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, values: list) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'values': list[vivjson.statement.Statement]}
__dataclass_fields__ = {'values': Field(name='values',type=list[vivjson.statement....rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Binary(Statement)
    Binary(left: vivjson.statement.Statement, operator: vivjson.tokens.Token, right: vivjson.statement.Statement) -> None
 
Binary data class
 
For example, 3 * 2 are stored into left, operator, and right.
 
 
Method resolution order:
Binary
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, left: vivjson.statement.Statement, operator: vivjson.tokens.Token, right: vivjson.statement.Statement) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'left': <class 'vivjson.statement.Statement'>, 'operator': <class 'vivjson.tokens.Token'>, 'right': <class 'vivjson.statement.Statement'>}
__dataclass_fields__ = {'left': Field(name='left',type=<class 'vivjson.statement...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'operator': Field(name='operator',type=<class 'vivjson.token...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'right': Field(name='right',type=<class 'vivjson.statemen...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Blank(Statement)
    Blank(token: vivjson.tokens.Token) -&gt; None
 
Blank data class
 
 
Method resolution order:
Blank
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, token: vivjson.tokens.Token) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
BLANK = '(blank)'
__annotations__ = {'token': <class 'vivjson.tokens.Token'>}
__dataclass_fields__ = {'token': Field(name='token',type=<class 'vivjson.tokens.T...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Block(Statement)
    Block(values: list, type: str) -&gt; None
 
Block data class
 
For example,
- anonymous: x = {a: 3, b: 2}
- pure: function test() {return(10)}
- limited: if (i > 10) {x="+"} else {x="-"}
 
In VivJson, any block is function.
The type of the outermost block (that is given from file/text) is
decided as anonymous function or class constructor by calling the
particular method.
 
 
Method resolution order:
Block
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, values: list, type: str) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
ANONYMOUS_FUNCTION = 'Block_anonymous'
CLASS_CONSTRUCTOR = 'Block_class'
LIMITED_FUNCTION = 'Block_limited'
PURE_FUNCTION = 'Block_pure'
__annotations__ = {'type': <class 'str'>, 'values': list[vivjson.statement.Statement]}
__dataclass_fields__ = {'type': Field(name='type',type=<class 'str'>,default=<da...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'values': Field(name='values',type=list[vivjson.statement....rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Call(Statement)
    Call(name: vivjson.statement.Statement, arguments: vivjson.statement.Array) -&gt; None
 
Call data class
 
This is used to call function, such as len("abc").
 
 
Method resolution order:
Call
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, name: vivjson.statement.Statement, arguments: vivjson.statement.Array) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'arguments': <class 'vivjson.statement.Array'>, 'name': <class 'vivjson.statement.Statement'>}
__dataclass_fields__ = {'arguments': Field(name='arguments',type=<class 'vivjson.stat...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'name': Field(name='name',type=<class 'vivjson.statement...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Callee(Statement)
    Callee(name: vivjson.statement.Parameter, parameters: vivjson.statement.Array) -&gt; None
 
Callee data class
 
This is used to define function entity.
The example is shown as below.
 
    name   parameters[0]   parameters[1]
     |         |             |
     V         V             v
_____________ ____  ______________
function test(data, function block) {
    :
    :
}
 
In "name", its "modifier" of Parameter is essential.
In "parameters", its "modifier" of Parameter is optional.
 
 
Method resolution order:
Callee
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, name: vivjson.statement.Parameter, parameters: vivjson.statement.Array) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'name': <class 'vivjson.statement.Parameter'>, 'parameters': <class 'vivjson.statement.Array'>}
__dataclass_fields__ = {'name': Field(name='name',type=<class 'vivjson.statement...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'parameters': Field(name='parameters',type=<class 'vivjson.sta...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class CalleeRegistry(Statement)
    CalleeRegistry(callee: vivjson.statement.Callee, environment: Any, is_reference: bool) -&gt; None
 
Callee Registry data class
 
This is made in Evaluator. This is not used in Parser.
 
Member "environment" is Environment instance or None.
The former (Environment instance) is set if callee is Closure.
 
Member "is_reference" is True if this is not the definition of
function.
 
For example, "enclosure", "z1", and "z2" are registered as this
data class.
"environment" of "enclosure" is None.
On the other hand, "environment" of "z1" and "z2" is Environment
instance.
"is_reference" of "enclosure" is False. "is_reference" of "z1" and
"z2" is True.
 
function enclosure(a) {
    x = a
    function closure(y) {
        return(x + y)
    }
    return(closure)
}
z1 = enclosure(100)
z2 = enclosure(200)
print(z1(5))  # 105
print(z2(10))  # 210
 
By the way, this data class is used even if assignment is simple.
The following "y" is also this instance.
"environment" of "x2" and "y" is None.
"is_reference" of "x2" is False. "is_reference" of "y" is True.
 
function x2(a) {
    return(a * 2)
}
y = x2
 
"is_reference" decides whether the variable is remained or not
after evaluating block.
In the following sample, member of "k" will be only "y" after
evaluation. Because the definition of function is not remained
as result. Although value of "x2" and "y" is this instance,
since "is_reference" of "y" is True, only "y" will be remained.
 
k = {
    function x2(a) {
        return(a * 2)
    }
    y = x2
}
 
Similarly, the following "table" can keep its members.
 
function add(a, b) {
    return(a + b)
}
function sub(a, b) {
    return(a - b)
}
table = {
    "+": add,
    "-": sub
}
 
 
Method resolution order:
CalleeRegistry
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, callee: vivjson.statement.Callee, environment: Any, is_reference: bool) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'callee': <class 'vivjson.statement.Callee'>, 'environment': typing.Any, 'is_reference': <class 'bool'>}
__dataclass_fields__ = {'callee': Field(name='callee',type=<class 'vivjson.stateme...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'environment': Field(name='environment',type=typing.Any,default...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'is_reference': Field(name='is_reference',type=<class 'bool'>,de...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Get(Statement)
    Get(members: list) -&gt; None
 
Get data class
 
For example, x["y"]["z"] is represented as ["x", "y", "z"].
Similarly, x.y.z is represented.
 
 
Method resolution order:
Get
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, members: list) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'members': list[vivjson.statement.Statement]}
__dataclass_fields__ = {'members': Field(name='members',type=list[vivjson.statement...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Identifier(Statement)
    Identifier(name: vivjson.tokens.Token) -&gt; None
 
Identifier data class
 
It is used as name of variable, function, and class.
 
 
Method resolution order:
Identifier
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, name: vivjson.tokens.Token) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'name': <class 'vivjson.tokens.Token'>}
__dataclass_fields__ = {'name': Field(name='name',type=<class 'vivjson.tokens.To...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Injection(Statement)
    Injection(variable: str, value: ~HOSTVALUE, location: Optional[str]) -&gt; None
 
Injection data class
 
Set host language's variable.
 
 
Method resolution order:
Injection
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, variable: str, value: ~HOSTVALUE, location: Optional[str]) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'location': typing.Optional[str], 'value': ~HOSTVALUE, 'variable': <class 'str'>}
__dataclass_fields__ = {'location': Field(name='location',type=typing.Optional[str],...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'value': Field(name='value',type=~HOSTVALUE,default=<data...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'variable': Field(name='variable',type=<class 'str'>,default...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Keyword(Statement)
    Keyword(token: vivjson.tokens.Token) -&gt; None
 
Keyword data class
 
return, break, and so on
 
 
Method resolution order:
Keyword
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, token: vivjson.tokens.Token) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'token': <class 'vivjson.tokens.Token'>}
__dataclass_fields__ = {'token': Field(name='token',type=<class 'vivjson.tokens.T...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Literal(Statement)
    Literal(token: vivjson.tokens.Token) -&gt; None
 
Literal data class
 
 
Method resolution order:
Literal
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, token: vivjson.tokens.Token) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'token': <class 'vivjson.tokens.Token'>}
__dataclass_fields__ = {'token': Field(name='token',type=<class 'vivjson.tokens.T...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Loop(Statement)
    Loop(call: vivjson.statement.Call, initial: list, continuous: list, statements: list, each: Optional[vivjson.statement.Identifier], iterator: Optional[list]) -&gt; None
 
Loop data class
 
"call" is not used for actual control. It may be used to print
function name.
"statements" is main operation.
"initial" proposes whether loop should be done or not before loop.
"continuous" proposes whether loop should be done or not after 1st
loop.
"initial" and "continuous" are a list of Statement. The judgement
is decided with the last Statement.
"each" and "iterator" is used for "for (i in [1, 2, 3]) {...}"
style. "each" is variable as Identifier. "iterator" is list or
dict.
 
For example, for (i = 0; i < 10; i += 1) { print(i) }
"initial" is [i = 0; i < 10].
"continuous" is [i += 1; i < 10].
"statements" is [print(i)].
"each" is None.
"iterator" is None.
 
For example, for (i in [1, 2, 3]) { print(i) }
"initial" is [true].
"continuous" is [true].
"statements" is [print(i)].
"each" is i.
"iterator" is [1, 2, 3].
 
For example, for (i in {"a": 1, "b": 2, "c": 3}) { print(i) }
"initial" is [true].
"continuous" is [true].
"statements" is [print(i)].
"each" is i.
"iterator" is {"a": 1, "b": 2, "c": 3}.
 
 
Method resolution order:
Loop
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, call: vivjson.statement.Call, initial: list, continuous: list, statements: list, each: Optional[vivjson.statement.Identifier], iterator: Optional[list]) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'call': <class 'vivjson.statement.Call'>, 'continuous': list[vivjson.statement.Statement], 'each': typing.Optional[vivjson.statement.Identifier], 'initial': list[vivjson.statement.Statement], 'iterator': typing.Optional[list], 'statements': list[vivjson.statement.Statement]}
__dataclass_fields__ = {'call': Field(name='call',type=<class 'vivjson.statement...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'continuous': Field(name='continuous',type=list[vivjson.statem...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'each': Field(name='each',type=typing.Optional[vivjson.s...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'initial': Field(name='initial',type=list[vivjson.statement...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'iterator': Field(name='iterator',type=typing.Optional[list]...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'statements': Field(name='statements',type=list[vivjson.statem...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Parameter(Statement)
    Parameter(modifier: Optional[vivjson.tokens.Token], name: vivjson.statement.Identifier) -&gt; None
 
Parameter data class
 
This is used to assist the definition of function entity.
The example is shown as below. There are 3 Parameters.
 
(1) modifier + name   (3) modifier + name
     |                     |
     |    (2) only name    |
     |          |          |
     V          V          v
_____________ ____  ______________
function test(data, function block) {
    :
    :
}
 
- "modifier" is essential at (1).
- "modifier" is optional at (2) and (3).
 
 
Method resolution order:
Parameter
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, modifier: Optional[vivjson.tokens.Token], name: vivjson.statement.Identifier) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'modifier': typing.Optional[vivjson.tokens.Token], 'name': <class 'vivjson.statement.Identifier'>}
__dataclass_fields__ = {'modifier': Field(name='modifier',type=typing.Optional[vivjs...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'name': Field(name='name',type=<class 'vivjson.statement...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Remove(Statement)
    Remove(token: vivjson.tokens.Token, members: list) -&gt; None
 
Remove data class
 
For example, remove(x["y"]["z"]), remove(x.y.z)
 
 
Method resolution order:
Remove
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, token: vivjson.tokens.Token, members: list) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'members': list[vivjson.statement.Statement], 'token': <class 'vivjson.tokens.Token'>}
__dataclass_fields__ = {'members': Field(name='members',type=list[vivjson.statement...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'token': Field(name='token',type=<class 'vivjson.tokens.T...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Return(Statement)
    Return(token: vivjson.tokens.Token, value: Optional[vivjson.statement.Statement]) -&gt; None
 
Return data class
 
"return" [ "(" value ")" ]
 
 
Method resolution order:
Return
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, token: vivjson.tokens.Token, value: Optional[vivjson.statement.Statement]) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'token': <class 'vivjson.tokens.Token'>, 'value': typing.Optional[vivjson.statement.Statement]}
__dataclass_fields__ = {'token': Field(name='token',type=<class 'vivjson.tokens.T...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'value': Field(name='value',type=typing.Optional[vivjson....rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Set(Statement)
    Set(members: list, operator: vivjson.tokens.Token, value: vivjson.statement.Statement) -&gt; None
 
Set data class
 
For example, x["y"]["z"] = 3 is represented as below.
  - members: ["x", "y", "z"]
  - operator: =
  - value: 3
Similarly, x.y.z = 3 is represented.
 
 
Method resolution order:
Set
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, members: list, operator: vivjson.tokens.Token, value: vivjson.statement.Statement) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'members': list[vivjson.statement.Statement], 'operator': <class 'vivjson.tokens.Token'>, 'value': <class 'vivjson.statement.Statement'>}
__dataclass_fields__ = {'members': Field(name='members',type=list[vivjson.statement...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'operator': Field(name='operator',type=<class 'vivjson.token...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'value': Field(name='value',type=<class 'vivjson.statemen...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Statement(builtins.object)
    Statement() -&gt; None
 
Statement data class
 
Abstract class.
 
  Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes defined here:
__dataclass_fields__ = {}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

 
class Value(Statement)
    Value(value: ~HOSTVALUE, location: Optional[str]) -&gt; None
 
Value data class
 
Set host language's value.
 
 
Method resolution order:
Value
Statement
builtins.object

Methods defined here:
__delattr__(self, name)
__eq__(self, other)
__hash__(self)
__init__(self, value: ~HOSTVALUE, location: Optional[str]) -> None
__repr__(self)
Return repr(self).
__setattr__(self, name, value)

Data and other attributes defined here:
__annotations__ = {'location': typing.Optional[str], 'value': ~HOSTVALUE}
__dataclass_fields__ = {'location': Field(name='location',type=typing.Optional[str],...rue,metadata=mappingproxy({}),_field_type=_FIELD), 'value': Field(name='value',type=~HOSTVALUE,default=<data...rue,metadata=mappingproxy({}),_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=True)

Data descriptors inherited from Statement:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Data
        Any = typing.Any
HOSTVALUE = ~HOSTVALUE
LITERAL = ~LITERAL
Optional = typing.Optional

 
Author
        Fumiaki Motegi <motegi@benesult.com>