#!/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 util/dict -D_DICT_STANDALONE # leak dict # cc demos/lexer util/dict.c # leak lexer # cc recursive/recursive-ascent # leak recursive-ascent # cc recursive/recursive-ascent-descent # leak recursive-ascent-descent # cc util-tables -D_UTIL_TABLES_STANDALONE # leak util-tables # cc slr-table -D_SLR_TABLE_STANDALONE # leak slr-table # cc clr-table -D_CLR_TABLE_STANDALONE # leak clr-table # cc clr-table "-D_CLR_TABLE_STANDALONE -D_LAZY_LALR" lalr-table # leak lalr-table # cc lr-parser -D_LR_PARSER_STANDALONE # leak lr-parser # cc demos/instant-parser # not working # leak instant-parser # not working #--------------------------------------------------------------------------------------------------# cc demos/generate-parser "-rdynamic" shared slr-table shared clr-table shared clr-table -D_LAZY_LALR lalr-table shared demos/sample-files/lalr-defs # --- Calc example --- # shared demos/sample-files/calc-defs # leak generate-parser "-o bin/calc -t lalr-table bin/calc-defs.so" # cc demos/sample-files/calc-skeleton "" parser # leak parser "13*10+9" # leak parser "-13+20" # leak parser "1>52?2+3:53" # exit 0 # --- Grammar Definition example --- shared demos/sample-files/gram-defs leak generate-parser "-o bin/gram -t lalr-table bin/gram-defs.so" cc demos/sample-files/gram-skeleton "" gram-parser # !!! gram.g is outdated !!! # leak gram-parser < demos/sample-files/gram.g > bin/gram-gram.c # shared bin/gram-gram # leak generate-parser "-o bin/gram -t lalr-table bin/gram-gram.so" # cc demos/sample-files/gram-skeleton "" gram2-parser # leak gram-parser < demos/sample-files/calc.g > bin/calc-gram.c # shared bin/calc-gram # leak generate-parser "-o bin/calc -t lalr-table bin/calc-gram.so" # cc demos/sample-files/calc-skeleton "" calc-parser # leak calc-parser "13*10+9" # leak calc-parser "-13+20" # leak calc-parser "1>52?2+3:53" leak gram-parser < demos/sample-files/lbp.g > bin/lbp-gram.c shared bin/lbp-gram leak generate-parser "-o bin/lbp -t lalr-table bin/lbp-gram.so" cc demos/sample-files/lbp-skeleton "util/dict.c" lbp-parser leak lbp-parser < demos/sample-files/lbp-code.lbp