Extraction from streams (#25)
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Add the ! postfix operator and !! expression. Also add the ++ string concatenation operator. Also allow specification of standard input in the test scheme. Resolves #7, #18. Co-authored-by: Glen Whitney <glen@studioinfinity.org> Reviewed-on: #25 Co-Authored-By: Glen Whitney <glen@nobody@nowhere.net> Co-Committed-By: Glen Whitney <glen@nobody@nowhere.net>
This commit is contained in:
parent
cc89ad1e93
commit
7feddbcfbe
11 changed files with 106 additions and 11 deletions
|
@ -293,4 +293,38 @@ test emit_several_default [[
|
|||
>>>
|
||||
]] parse succeeds
|
||||
/** writes
|
||||
3399677527121313*/
|
||||
3399677527121313**/
|
||||
|
||||
/** md
|
||||
### Streams are bidirectional
|
||||
|
||||
So far we have only sent items to a stream. But we can extract them from
|
||||
streams as well, with the `!` postfix operator. `!!` all by itself abbreviates
|
||||
`stream!`, i.e., extraction from the standard stream. For example,
|
||||
|
||||
```fostr
|
||||
**/
|
||||
|
||||
/** md */ test custom_hw [[
|
||||
<<< "What is your name?\n"
|
||||
<<< 'Hello, ' ++ !!
|
||||
]] /* **/
|
||||
parse to TopLevel(Sequence([
|
||||
DefGets(EscString("\"What is your name?\n\"")),
|
||||
DefGets(Concat(LitString("'Hello, '"),DefEmits()))
|
||||
]))
|
||||
/** accepts
|
||||
Kilroy
|
||||
**/
|
||||
/** writes
|
||||
What is your name?
|
||||
Hello, Kilroy
|
||||
**/
|
||||
|
||||
/** md
|
||||
```
|
||||
|
||||
queries users for their name and then writes a customized greeting. It also
|
||||
illustrates the use of `++` for string concatenation, as opposed to `+` for
|
||||
(numerical) addition.
|
||||
**/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue