# Ejemplo 01, guardado en viejos/: recorre la biblioteca entera desde C.
# Lo que se sabe de el esta en LEAME, aca al lado.
#
# main.c usa casi toda la API --tablas, celdas, lineas, vistas, secuencias,
# encabezados, interpolacion y gnuplot-- y al final llama a yyparse() para
# leer la entrada con un analizador hecho con flex y bison.
#
# Se enlaza contra el arbol de fuentes; las banderas son las mismas de
# ../../examples/comun.mk, que se incluye desde aca.
#
# calc.y y flex.l vinieron de ../flex, el experimento de lexer de donde
# salio tabular 2 (svn move, la historia viaja con ellos).
#
# ESTADO: compila y enlaza, y el programa arranca y usa la biblioteca, pero no
# se sabe que entrada espera. El analizador no lee un archivo de tabla comun:
# define un lenguaje propio con \table(nombre), \include(archivo) y \tt(...),
# y las entradas que se probaron --incluida data/flexexample102.txt, que parece
# hecha para esto-- terminan en "syntax error, unexpected end of file,
# expecting NEWTABLE". Averiguarlo es leerse la gramatica entera. Para ver la
# biblioteca en uso conviene mirar ../02, que compila, corre y hace algo claro.
#
# Para que compilara hubo que sacar dos cosas de flex.l, las dos anotadas
# adentro: una copia de quees() que chocaba con la de la biblioteca, y un ";"
# suelto despues del segundo %% que hacia invalido el C generado. Ninguna se
# veia antes, porque este archivo no se compilaba desde ningun lado.
#
# This file is part of Tabular
#
#    Tabular is free software: you can redistribute it and/or modify
#    it under the terms of
#
#     1)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.
#
#    2) Any other free licence with copyleft recognized by the FSF
#
#    Tabular 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 Tabular.  If not, see <http://www.gnu.org/licenses/>.

include ../../examples/comun.mk

all: example01

example01: main.c flex.yy.c calc.tab.c $(TABULAR_A) Makefile ../../examples/comun.mk
	$(CC) $(CFLAGS) -std=gnu99 $(INCLUDES) -o $@ main.c flex.yy.c calc.tab.c $(LIBS)

flex.yy.c: flex.l calc.tab.h
	flex --outfile=flex.yy.c flex.l

calc.tab.c calc.tab.h: calc.y
	bison -t -Wcounterexamples -d calc.y -o calc.tab.c

clean:
	rm -f *.o *~ example01 flex.yy.c calc.tab.c calc.tab.h

.PHONY: all clean
