\section[lit2doc_for_jm]{Document-processing code for language \tr{jm}} \begin{code} sub rm_embedded_stuff { # return clean code + index entries (\002 separated) local($codetxt) = @_; ($codetxt, ''); } sub add_code_interests { # DO NOTHING # section and blk to record in ($s == -1: don't update) + the code local($s, $b, $_) = @_; local($defs_to_return) = ''; local($uses_to_return) = ''; # & setup_MkWorld_keywords(); $* = 1; # multi-line searches s/^>//g; # de-Bird-ize s/\/\*[^\/]*\*\///g;# de-commentize (necessarily fraught with peril) s/\"[^\"\n]*\"//g; # de-string-ize and de-char-ize s/\'[^\'\n]*\'//g; # OK, the "interesting" DEFS are #define'd things & defns of "make" vars # The latter must begin in col 1! while (/^(\s*#define\s+)([A-Za-z_][A-Za-z0-9_]{2,})(\s*)/ || /^(\s*)([A-Za-z_][A-Za-z0-9_]{2,})(\s*=)/) { local($before) = $1; local($interesting_thing) = $2; # see hacks below local($after) = $3; #print STDERR "defs=>$before::$interesting_thing::$after::\n"; if ($interesting_thing) { if ($s != -1) { $Blk_codethings_defd[$b] .= "$interesting_thing\001"; $Sec_codethings_defd[$s] .= "$interesting_thing\001"; } else { $defs_to_return .= "$interesting_thing\001"; } } # escaping all magic chars in before/interesting/after # is v important for avoiding infinite loops! (also below) $before =~ s/\s+/\\s\+/g; $after =~ s/\s+/\\s\+/g; s/$before$interesting_thing$after//g; } # I AM NOT INTERESTED IN USES AT THE MOMENT $* = 0; # ('', &std_codething_uses_check($s, $b, $incode)); ($defs_to_return, $uses_to_return); } #sub setup_MkWorld_keywords { # $IGNORE_WD{''} = 1; #} # this keeps 'do'ing happy 1; \end{code}