-
Notifications
You must be signed in to change notification settings - Fork 0
Category
Category is a way to limit the place of calling a specified block or sentence.
###Category on Sentences
Some sentences are only make sense to call in some blocks, like break
and repeat
. Multiple blocks can share the same category, and a sentence is allowed to be limited to use inside multiple categories of blocks.
For example, if we want to limit that break
can only be used inside repeat
:
category
start REPEAT
closable
block repeat ...
category
inside REPEAT
sentence break ...
A block can only have one start
, but a sentence can have multiple inside
. closable
means that this block can be ended by end
.
Because of the category configuration, the following statements are correct:
repeat
break
end
repeat
if true
break
end
end
Although if
is not in category REPEAT
, but repeat
is. So break
can be used in the if
in repeat
.
And this is not correct because break
does not appear inside repeat
or any other blocks that in caregory REPEAT
:
try
break
finally
end
inside
is not allowed on blocks, it is the only allowed configuration for sentences.
###Category on Blocks and Block Chains
You can specify follow
on blocks the build a block chain!
For example, you can use block to build the if
statement:
block (sentence body) if (condition)
select condition
case true
body
end
end
But what about else if
and else
?
To enable that, Tinymoe provides a feature called block chain. If you declare if
, else if
and else
in the following way:
category
start IFELSE if
closable
block (sentence body) if (condition)
...
category (signal)
follow IFELSE if
start IFELSE if
closable
block (sentence body) else if (expression condition)
...
category (signal)
follow IFELSE if
closable
block (sentence body) else
...
Then else if
and else
can be used right after if
and else if
because of the follow
configuration. else if
and else
cannot be used after else
also because of the follow
configuration. if
, else if
and else
can be the last block in a block chain because of the closable
configuration.
The follow
configuration requires that a block should be appear right after other blocks in the specified category. Multiple follow
are allowed on a block.
If a block has a follow
configuration, than category (signal)
is required because a block should receive the return value from the previous block. For example:
if condition one
A
else if condition two
B
else if condition three
C
else
D
end
All four blocks, if
, two else if
and else
, are executed sequencially. When condition one
success, if
should pass the imformation to the next else if
to tell it to skip, and else if
will tell the second else if
to skip, and it will tell the last else
to skip.
A block can pass information to the next block by writing the the result
variable. A block can receive information from the previous block by the signal
variable specified in category (signal)
.
If one of the previous blocks succeed, then the current else if
should not evaluate both the condition and the body. This is why else if
uses (expression condition)
(see Phrases, Sentences and Blocks).
More explanation for if
block series can be found in Standard Library: If Else.