#! /bin/sh # -*- coding: utf-8 -*- # Copyright (C) 2009, 2010, 2011, 2013, 2014 Laboratoire de Recherche et # Développement de l'Epita (LRDE). # Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6), # département Systèmes Répartis Coopératifs (SRC), Université Pierre # et Marie Curie. # # This file is part of Spot, a model checking library. # # Spot is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # Spot is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public # License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Check error recovery in parsing. This also checks how the # resulting tree looks like. . ./defs || exit 1 set -e check() { set +x; run 1 ../ltl2text "$1" >stdout 2>stderr; set -x if test -n "$2"; then echo "$2" >expect else : >expect fi if cmp stdout expect; then : else echo "'$1' parsed as" cat stdout echo "instead of" cat expect exit 1 fi if test -n "$3"; then echo "$3" >expect if cmp stderr expect; then : else echo "==== Error output was ====" cat stderr echo "==== instead of ====" cat expect exit 1 fi fi } # Empty or unparsable strings check '' '' check '+' '' check '/2/3/4/5 a + b /6/7/8/' '' cat >recover.txt < h), a U b U e R f a U ((c) U e) R (<=> f g), a U ((c) U e) R (0) # Missing parentheses a & (a + b, a & (a + b) a & (a + b c, a & (a + b) a & (+, a & 0 a & (, a & 0 # Invalid ranges {a[*8..1];b}, {a[*1..8];b} {a[=8..1];b}, {a[=1..8];b} {a[->8..1];b}, {a[->1..8];b} {a[->..0];b}, {a[->0..1];b} EOF run 0 ../equals -E recover.txt check 'a - b' 'AP(a)' '>>> a - b ^ syntax error, unexpected $undefined >>> a - b ^^^ ignoring trailing garbage ' check '{a[*9999999999]}' 'unop(Closure, bunop(Star, AP(a), 0, unbounded))' \ '>>> {a[*9999999999]} ^^^^^^^^^^ value too large ignored '