+++ /dev/null
-/*
- Example of property-based slicing.
- Try: spin -A wordcount
- Requires Spin version 3.4 or later
- */
-
-chan STDIN;
-int c, nl, nw, nc;
-
-init {
- bool inword = false;
-
- do
- :: STDIN?c ->
- if
- :: c == -1 -> break /* EOF */
- :: c == '\n' -> nc++; nl++
- :: else -> nc++
- fi;
- if
- :: c == ' ' || c == '\t' || c == '\n' ->
- inword = false
- :: else ->
- if
- :: !inword ->
- nw++; inword = true
- :: else /* do nothing */
- fi
- fi
- od;
- assert(nc >= nl);
- printf("%d\t%d\t%d\n", nl, nw, nc)
-}