From bb142b6fc4a08072b9207e0896db27df96bac7c8 Mon Sep 17 00:00:00 2001 From: CSRG Date: Sun, 8 Jan 1995 23:51:18 -0800 Subject: [PATCH] BSD 4_4_Lite2 development Work on file usr/src/contrib/flex-2.5.2/MISC/VMS/mkskel.tpu Synthesized-from: CSRG/cd3/4.4BSD-Lite2 --- .../contrib/flex-2.5.2/MISC/VMS/mkskel.tpu | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 usr/src/contrib/flex-2.5.2/MISC/VMS/mkskel.tpu diff --git a/usr/src/contrib/flex-2.5.2/MISC/VMS/mkskel.tpu b/usr/src/contrib/flex-2.5.2/MISC/VMS/mkskel.tpu new file mode 100644 index 0000000000..e20a0eb302 --- /dev/null +++ b/usr/src/contrib/flex-2.5.2/MISC/VMS/mkskel.tpu @@ -0,0 +1,45 @@ +! mkskel.tpu +! usage: +! edit/TPU/noDisplay/noSection/Command=mkskel.tpu flex.skl /Output=skel.c +! +! Create a C source file from the flex skeleton data. Copy the file, +! changing backslash (\) to doubled backslash (\\) and quote (") +! to backslash quote (\"). For each line, insert space+space+quote +! at the beginning and quote+comma at the end. Bracket the updated +! text with several lines of prologue and epilogue. +! + skelfile := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); + SET(NO_WRITE, skelfile); + target := '"' | '\'; !do this once, outside loops + POSITION(BEGINNING_OF(skelfile)); !start here + rest_of_line := CREATE_RANGE(MARK(NONE), MARK(NONE)); !also outside loops + LOOP + EXITIF MARK(NONE) = END_OF(skelfile); !are we done yet? + COPY_TEXT(' "'); start_pos := MARK(NONE); + POSITION(LINE_END); end_pos := MARK(NONE); + MODIFY_RANGE(rest_of_line, start_pos, end_pos); + LOOP + next_match := SEARCH_QUIETLY(target, FORWARD, EXACT, rest_of_line); + EXITIF next_match = 0; + POSITION(BEGINNING_OF(next_match)); + COPY_TEXT('\'); MOVE_HORIZONTAL(1); !past the matched character + MODIFY_RANGE(rest_of_line, MARK(NONE), end_pos); + ENDLOOP; + POSITION(LINE_END); COPY_TEXT('",'); + MOVE_VERTICAL(1); POSITION(LINE_BEGIN); !go to next line + ENDLOOP; + + POSITION(BEGINNING_OF(skelfile)); !insert five line prologue + COPY_TEXT('/* File created from flex.skl via mkskel.tpu */'); SPLIT_LINE; + SPLIT_LINE; + COPY_TEXT('#include "flexdef.h"'); SPLIT_LINE; + SPLIT_LINE; + COPY_TEXT('const char *skel[] = {'); SPLIT_LINE; + + POSITION(END_OF(skelfile)); !append two line epilogue + COPY_TEXT(' 0'); SPLIT_LINE; + COPY_TEXT('};'); !! SPLIT_LINE; + + WRITE_FILE(skelfile, GET_INFO(COMMAND_LINE, "output_file")); + QUIT +!---- -- 2.20.1