#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

TOP_DIR="$SCRIPT_DIR/../../.."
OUTPUT="$SCRIPT_DIR/rost.dict"


echo > "$OUTPUT"


echo "# Syntax core keywords" >> "$OUTPUT"

cat "$TOP_DIR/src/analysis/scan/grammar.y" | \
    grep '%token.*".*' | grep -o -E '"[^"]+"' | sort >> "$OUTPUT"


echo >> "$OUTPUT"
echo "# Modifiers" >> "$OUTPUT"

"$TOP_DIR/src/rost" --dump-modifiers | sort | sed -e 's/^/"/' -e 's/$/"/' >> "$OUTPUT"


echo >> "$OUTPUT"
echo "# Namespace" >> "$OUTPUT"

"$TOP_DIR/src/rost" --dump-namespaces | sort | sed -e 's/^/"/' -e 's/$/"/' >> "$OUTPUT"


echo >> "$OUTPUT"
echo "# Identifiers" >> "$OUTPUT"

for t in "$" "#" "@" "!" "~" ;
do
    echo "\"${t}a0\"" >> "$OUTPUT"
    echo "\"${t}a1\"" >> "$OUTPUT"
    echo "\"${t}b\"" >> "$OUTPUT"
    echo "\"${t}c\"" >> "$OUTPUT"
    echo "\"${t}a*\"" >> "$OUTPUT"
    echo "\"${t}*\"" >> "$OUTPUT"
    echo "\"${t}\"" >> "$OUTPUT"

done


echo >> "$OUTPUT"
echo "# Numbers" >> "$OUTPUT"

for i in $( seq 0 32 );
do
    echo -$(( 2 ** i - 1 )) ;
    echo -$(( 2 ** i )) ;
    echo -$(( 2 ** i + 1 )) ;

    echo $(( 2 ** i - 1 )) ;
    echo $(( 2 ** i )) ;
    echo $(( 2 ** i + 1 )) ;

done | sort | uniq | sort -n >> "$OUTPUT"


echo >> "$OUTPUT"
echo "# Misc" >> "$OUTPUT"

echo "\"kb\"" >> "$OUTPUT"
echo "\"mb\"" >> "$OUTPUT"
echo "\"gb\"" >> "$OUTPUT"

echo "\"a0\"" >> "$OUTPUT"
echo "\"a1\"" >> "$OUTPUT"
echo "\"b\"" >> "$OUTPUT"
echo "\"c\"" >> "$OUTPUT"

echo "\"\\\"abcdef\\\"\"" >> "$OUTPUT"
echo "\"\\\"azerty\\\"\"" >> "$OUTPUT"
echo "\"\\\"qwertyqwerty\\\"\"" >> "$OUTPUT"
echo "\"??\"" >> "$OUTPUT"
echo "\"0?\"" >> "$OUTPUT"
echo "\"?a\"" >> "$OUTPUT"

echo >> "$OUTPUT"