#!/bin/sh set -e function log { >&2 echo "-> $@" "$@" } function cc { mkdir -p bin [ -n "$3" ] && NAME=$3 || NAME=$(basename $1) log gcc -Wall -Wextra -Wpedantic -I. -g $2 $1.c -o "bin/$NAME" } function shared { mkdir -p bin [ -n "$3" ] && NAME=$3 || NAME=$(basename $1) log gcc -Wall -Wextra -Wpedantic -I. -g -shared -fPIC $2 $1.c -o "bin/$NAME.so" } function leak { log valgrind --leak-check=full --show-leak-kinds=all -s bin/$1 $2 } # cc lexer -D_LEXER_STANDALONE # cc recursive/recursive-ascent # cc recursive/recursive-ascent-descent # cc util-tables -D_UTIL_TABLES_STANDALONE # cc slr-table -D_SLR_TABLE_STANDALONE # cc clr-table -D_CLR_TABLE_STANDALONE # cc clr-table "-D_CLR_TABLE_STANDALONE -D_LAZY_LALR" lalr-table # cc lr-parser -D_LR_PARSER_STANDALONE # cc demos/instant-parser # leak lexer # leak recursive-ascent # leak recursive-ascent-descent # leak util-tables # leak slr-table # leak clr-table # leak lalr-table # leak lr-parser # leak instant-parser #--------------------------------------------------------------------------------------------------# cc demos/generate-parser "-rdynamic" shared demos/sample-files/lalr-defs shared demos/sample-files/arithmetic-defs shared slr-table shared clr-table shared clr-table -D_LAZY_LALR lalr-table leak "generate-parser -t slr-table bin/arithmetic-defs.so" > bin/generated.c cc demos/sample-files/parser-skeleton "" parser # this includes bin/generated.c leak parser "0-1+(1+0)-1+0"