2
0

hxtool 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #!/bin/sh
  2. hxtoh()
  3. {
  4. flag=1
  5. while read -r str; do
  6. case $str in
  7. HXCOMM*)
  8. ;;
  9. STEXI*|ETEXI*|SQMP*|EQMP*) flag=$(($flag^1))
  10. ;;
  11. *)
  12. test $flag -eq 1 && printf "%s\n" "$str"
  13. ;;
  14. esac
  15. done
  16. }
  17. print_texi_heading()
  18. {
  19. if test "$*" != ""; then
  20. printf "@subsection %s\n" "$*"
  21. fi
  22. }
  23. hxtotexi()
  24. {
  25. flag=0
  26. line=1
  27. while read -r str; do
  28. case "$str" in
  29. HXCOMM*)
  30. ;;
  31. STEXI*)
  32. if test $flag -eq 1 ; then
  33. printf "line %d: syntax error: expected ETEXI, found '%s'\n" "$line" "$str" >&2
  34. exit 1
  35. fi
  36. flag=1
  37. ;;
  38. ETEXI*)
  39. if test $flag -ne 1 ; then
  40. printf "line %d: syntax error: expected STEXI, found '%s'\n" "$line" "$str" >&2
  41. exit 1
  42. fi
  43. flag=0
  44. ;;
  45. SQMP*|EQMP*)
  46. if test $flag -eq 1 ; then
  47. printf "line %d: syntax error: expected ETEXI, found '%s'\n" "$line" "$str" >&2
  48. exit 1
  49. fi
  50. ;;
  51. DEFHEADING*)
  52. print_texi_heading "$(expr "$str" : "DEFHEADING(\(.*\))")"
  53. ;;
  54. ARCHHEADING*)
  55. print_texi_heading "$(expr "$str" : "ARCHHEADING(\(.*\),.*)")"
  56. ;;
  57. *)
  58. test $flag -eq 1 && printf '%s\n' "$str"
  59. ;;
  60. esac
  61. line=$((line+1))
  62. done
  63. }
  64. hxtoqmp()
  65. {
  66. IFS=
  67. flag=0
  68. line=1
  69. while read -r str; do
  70. case "$str" in
  71. HXCOMM*)
  72. ;;
  73. SQMP*)
  74. if test $flag -eq 1 ; then
  75. printf "line %d: syntax error: expected EQMP, found '%s'\n" "$line" "$str" >&2
  76. exit 1
  77. fi
  78. flag=1
  79. ;;
  80. EQMP*)
  81. if test $flag -ne 1 ; then
  82. printf "line %d: syntax error: expected SQMP, found '%s'\n" "$line" "$str" >&2
  83. exit 1
  84. fi
  85. flag=0
  86. ;;
  87. STEXI*|ETEXI*)
  88. if test $flag -eq 1 ; then
  89. printf "line %d: syntax error: expected EQMP, found '%s'\n" "$line" "$str" >&2
  90. exit 1
  91. fi
  92. ;;
  93. *)
  94. test $flag -eq 1 && printf '%s\n' "$str"
  95. ;;
  96. esac
  97. line=$((line+1))
  98. done
  99. }
  100. case "$1" in
  101. "-h") hxtoh ;;
  102. "-t") hxtotexi ;;
  103. "-q") hxtoqmp ;;
  104. *) exit 1 ;;
  105. esac
  106. exit 0