diff options
author | van Hauser <vh@thc.org> | 2021-08-20 23:54:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-20 23:54:59 +0200 |
commit | 2e15661f184c77ac1fbb6f868c894e946cbb7f17 (patch) | |
tree | 665b9368d2c1908cf71dbc4a76517f88c5317d9a /custom_mutators/gramatron/preprocess/prep_automaton.sh | |
parent | 32a0d6ac31554a47dca591f8978982758fb87677 (diff) | |
parent | ca9c87dd45d8b9a746a212cbc6ce85b78b637d8c (diff) | |
download | afl++-2e15661f184c77ac1fbb6f868c894e946cbb7f17.tar.gz |
Merge pull request #1074 from AFLplusplus/dev
push to stable
Diffstat (limited to 'custom_mutators/gramatron/preprocess/prep_automaton.sh')
-rwxr-xr-x | custom_mutators/gramatron/preprocess/prep_automaton.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/custom_mutators/gramatron/preprocess/prep_automaton.sh b/custom_mutators/gramatron/preprocess/prep_automaton.sh new file mode 100755 index 00000000..28d99fb0 --- /dev/null +++ b/custom_mutators/gramatron/preprocess/prep_automaton.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# This script creates a FSA describing the input grammar *.g4 + +if [ ! "$#" -lt 4 ]; then + echo "Usage: ./prep_pda.sh <grammar_file> <start> [stack_limit]" + exit 1 +fi + +GRAMMAR_FILE=$1 +GRAMMAR_DIR="$(dirname $GRAMMAR_FILE)" +START="$2" +STACK_LIMIT="$3" + +# Get filename +FILE=$(basename -- "$GRAMMAR_FILE") +echo "File:$FILE" +FILENAME="${FILE%.*}" +echo "Name:$FILENAME" + + +# Create the GNF form of the grammar +CMD="python gnf_converter.py --gf $GRAMMAR_FILE --out ${FILENAME}.json --start $START" +$CMD + +# Generate grammar automaton +# Check if user provided a stack limit +if [ -z "${STACK_LIMIT}" ]; then +CMD="python3 construct_automata.py --gf ${FILENAME}.json" +else +CMD="python construct_automata.py --gf ${FILENAME}.json --limit ${STACK_LIMIT}" +fi +echo $CMD +$CMD + +# Move PDA to the source dir of the grammar +echo "Copying ${FILENAME}_automata.json to $GRAMMAR_DIR" +mv "${FILENAME}_automata.json" $GRAMMAR_DIR/ |