#! /bin/sh # -*- coding: utf-8 -*- # Copyright (C) by the Spot authors, see the AUTHORS file for details. # # 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 cat >input < output sed 's/$$//' >expected<<\EOF >>> $ ^ empty input >>> + ^ syntax error, unexpected or operator >>> + ^ ignoring trailing garbage >>> /2/3/4/5 a + b /6/7/8/ ^ syntax error, unexpected invalid token >>> /2/3/4/5 a + b /6/7/8/ ^^^^^^^^^^^^^^^^^^^^^^ ignoring trailing garbage >>> a - b ^ syntax error, unexpected invalid token >>> a - b ^^^ ignoring trailing garbage "a" >>> {a[*9999999999]} ^^^^^^^^^^ value too large ignored Closure(@6 #0 [Star(@5 #0 0.. ["a"])]) >>> {a ##[1:255] b} ^^^ 255 exceeds maximum supported repetition (254) Closure(@12 #0 [Concat(@11 #0 ["a", Star(@9 #0 0..253 [tt(@1 #0)]), "b"])]) >>> {a ##255 b} ^^^^^ 255 exceeds maximum supported repetition (254) Closure(@17 #0 [Concat(@16 #0 ["a", Star(@15 #0 253..253 [tt(@1 #0)]), "b"])]) EOF diff output expected 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} {a[->2..300];b}, {a[->2..254];b} EOF run 0 ../equals -E recover.txt