#!/bin/sh

hxtoh()
{
    flag=1
    while read -r str; do
        case $str in
            HXCOMM*)
            ;;
            STEXI*|ETEXI*|SQMP*|EQMP*) flag=$(($flag^1))
            ;;
            *)
            test $flag -eq 1 && printf "%s\n" "$str"
            ;;
        esac
    done
}

hxtotexi()
{
    flag=0
    line=1
    while read -r str; do
        case "$str" in
            HXCOMM*)
            ;;
            STEXI*)
            if test $flag -eq 1 ; then
                printf "line %d: syntax error: expected ETEXI, found '%s'\n" "$line" "$str" >&2
                exit 1
            fi
            flag=1
            ;;
            ETEXI*)
            if test $flag -ne 1 ; then
                printf "line %d: syntax error: expected STEXI, found '%s'\n" "$line" "$str" >&2
                exit 1
            fi
            flag=0
            ;;
            SQMP*|EQMP*)
            if test $flag -eq 1 ; then
                printf "line %d: syntax error: expected ETEXI, found '%s'\n" "$line" "$str" >&2
                exit 1
            fi
            ;;
            DEFHEADING*)
            printf '%s\n' "$(expr "$str" : "DEFHEADING(\(.*\))")"
            ;;
            ARCHHEADING*)
            printf '%s\n' "$(expr "$str" : "ARCHHEADING(\(.*\),.*)")"
            ;;
            *)
            test $flag -eq 1 && printf '%s\n' "$str"
            ;;
        esac
        line=$((line+1))
    done
}

hxtoqmp()
{
    IFS=
    flag=0
    line=1
    while read -r str; do
        case "$str" in
            HXCOMM*)
            ;;
            SQMP*)
            if test $flag -eq 1 ; then
                printf "line %d: syntax error: expected EQMP, found '%s'\n" "$line" "$str" >&2
                exit 1
            fi
            flag=1
            ;;
            EQMP*)
            if test $flag -ne 1 ; then
                printf "line %d: syntax error: expected SQMP, found '%s'\n" "$line" "$str" >&2
                exit 1
            fi
            flag=0
            ;;
            STEXI*|ETEXI*)
            if test $flag -eq 1 ; then
                printf "line %d: syntax error: expected EQMP, found '%s'\n" "$line" "$str" >&2
                exit 1
            fi
            ;;
            *)
            test $flag -eq 1 && printf '%s\n' "$str"
            ;;
        esac
        line=$((line+1))
    done
}

case "$1" in
"-h") hxtoh ;;
"-t") hxtotexi ;;
"-q") hxtoqmp ;;
*) exit 1 ;;
esac

exit 0
