diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-11-22 21:09:31 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-11-22 21:09:31 +0100 |
commit | 28e9566dc539244b3b429c21c556d656733839c2 (patch) | |
tree | 1564ecdf009d240cb9247a10a0fcb6491e0424c4 /sys/src/cmd/spin/tl_parse.c | |
parent | 077e719dfbf9bf2582bed80026251cc0d108c16e (diff) |
spin: Update to most recent version. (thanks Ori_B)
from Ori_B:
There were a small number of changes needed from the tarball
on spinroot.org:
- The mkfile needed to be updated
- Memory.h needed to not be included
- It needed to invoke /bin/cpp instead of gcc -E
- It depended on `yychar`, which our yacc doesn't
provide.
I'm still figuring out how to use spin, but it seems to do
the right thing when testing a few of the examples:
% cd $home/src/Spin/Examples/
% spin -a peterson.pml
% pcc pan.c -D_POSIX_SOURCE
% ./6.out
(Spin Version 6.4.7 -- 19 August 2017)
+ Partial Order Reduction
Full statespace search for:
never claim - (none specified)
assertion violations +
acceptance cycles - (not selected)
invalid end states +
State-vector 32 byte, depth reached 24, errors: 0
40 states, stored
27 states, matched
67 transitions (= stored+matched)
0 atomic steps
hash conflicts: 0 (resolved)
Stats on memory usage (in Megabytes):
0.002 equivalent memory usage for states (stored*(State-vector + overhead))
0.292 actual memory usage for states
128.000 memory used for hash table (-w24)
0.534 memory used for DFS stack (-m10000)
128.730 total actual memory usage
unreached in proctype user
/tmp/Spin/Examples/peterson.pml:20, state 10, "-end-"
(1 of 10 states)
pan: elapsed time 1.25 seconds
pan: rate 32 states/second
Diffstat (limited to 'sys/src/cmd/spin/tl_parse.c')
-rw-r--r-- | sys/src/cmd/spin/tl_parse.c | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/sys/src/cmd/spin/tl_parse.c b/sys/src/cmd/spin/tl_parse.c index 6206a0d99..6a16017ec 100644 --- a/sys/src/cmd/spin/tl_parse.c +++ b/sys/src/cmd/spin/tl_parse.c @@ -1,16 +1,13 @@ /***** tl_spin: tl_parse.c *****/ -/* Copyright (c) 1995-2003 by Lucent Technologies, Bell Laboratories. */ -/* All Rights Reserved. This software is for educational purposes only. */ -/* No guarantee whatsoever is expressed or implied by the distribution of */ -/* this code. Permission is given to distribute this code provided that */ -/* this introductory message is not removed and no monies are exchanged. */ -/* Software written by Gerard J. Holzmann. For tool documentation see: */ -/* http://spinroot.com/ */ -/* Send all bug-reports and/or questions to: bugs@spinroot.com */ - -/* Based on the translation algorithm by Gerth, Peled, Vardi, and Wolper, */ -/* presented at the PSTV Conference, held in 1995, Warsaw, Poland 1995. */ +/* + * This file is part of the public release of Spin. It is subject to the + * terms in the LICENSE file that is included in this source directory. + * Tool documentation is available at http://spinroot.com + * + * Based on the translation algorithm by Gerth, Peled, Vardi, and Wolper, + * presented at the PSTV Conference, held in 1995, Warsaw, Poland 1995. + */ #include "tl.h" @@ -44,11 +41,13 @@ tl_factor(void) ptr = tl_yylval; tl_yychar = tl_yylex(); ptr->lft = tl_factor(); + if (!ptr->lft) + { fatal("malformed expression", (char *) 0); + } ptr = push_negation(ptr); break; case ALWAYS: tl_yychar = tl_yylex(); - ptr = tl_factor(); #ifndef NO_OPT if (ptr->ntyp == FALSE @@ -73,6 +72,14 @@ tl_factor(void) ptr = tl_nn(NEXT, ptr, ZN); break; #endif + case CEXPR: + tl_yychar = tl_yylex(); + ptr = tl_factor(); + if (ptr->ntyp != PREDICATE) + { tl_yyerror("expected {...} after c_expr"); + } + ptr = tl_nn(CEXPR, ptr, ZN); + break; case EVENTUALLY: tl_yychar = tl_yylex(); @@ -385,7 +392,10 @@ tl_formula(void) void tl_parse(void) -{ Node *n = tl_formula(); +{ Node *n; + + /* tl_verbose = 1; */ + n = tl_formula(); if (tl_verbose) { printf("formula: "); dump(n); |