# Test suite for GNU Bison.				-*- Autotest -*-

# Copyright (C) 2000-2004, 2006-2007, 2009-2012 Free Software
# Foundation, Inc.

# This program 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.
#
# This program 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 <http://www.gnu.org/licenses/>.


# Testing resistance to user bugs.
m4_include([input.at])

# Testing named references.
m4_include([named-refs.at])

# Testing output file names.
m4_include([output.at])

# Testing skeleton support.
m4_include([skeletons.at])

# Testing the part of the engine that computes FOLLOW etc.
m4_include([sets.at])

# Testing grammar reduction.
m4_include([reduce.at])

# Testing that #lines are correct.
m4_include([synclines.at])

# Testing that headers are sane.
m4_include([headers.at])

# Testing that user actions are properly performed.
m4_include([actions.at])

# Testing conflicts detection and resolution.
m4_include([conflicts.at])

# Fulling testing (compilation and execution of the parser) on calc.
m4_include([calc.at])

# Huge artificial grammars.
# Torturing the stack expansion at runtime.
m4_include([torture.at])

# Checking big, real world grammars.
m4_include([existing.at])

# Some old bugs.
m4_include([regression.at])

# Some C++ specific tests.
m4_include([c++.at])

# And some Java specific tests.
m4_include([java.at])

# GLR tests:
# C++ types, simplified
m4_include([cxx-type.at])
# Regression tests
m4_include([glr-regression.at])

# Push parsing specific tests.
m4_include([push.at])
