diff options
author | Karl Berry <karl@freefriends.org> | 2009-05-16 00:19:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-05-16 00:19:13 +0000 |
commit | bab45528d65eaafe68a705dbb2a57075c7b7cbd8 (patch) | |
tree | 10b4ae2b5195c8dede153ab89359ec00f55f325f /Build/source/utils/asymptote/keywords.pl | |
parent | 8643d90372e9c31e0f461c15c596b60a545bd7d3 (diff) |
asymptote 1.72 sources (not integrated into build yet)
git-svn-id: svn://tug.org/texlive/trunk@13110 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/keywords.pl')
-rwxr-xr-x | Build/source/utils/asymptote/keywords.pl | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/keywords.pl b/Build/source/utils/asymptote/keywords.pl new file mode 100755 index 00000000000..d3b48c5220c --- /dev/null +++ b/Build/source/utils/asymptote/keywords.pl @@ -0,0 +1,60 @@ +#!/usr/bin/env perl +##### +# keywords.pl +# Andy Hammerlindl 2006/07/31 +# +# Extract keywords from camp.l and list them in a keywords file. These +# keywords are used in autocompletion at the interactive prompt. +##### + +# Extra keywords to add that aren't automatically extracted, currently none. +@extrawords = (); + + +open(keywords, ">keywords.cc") || + die("Couldn't open keywords.out for writing."); + +print keywords <<END; +/***** + * This file is automatically generated by keywords.pl. + * Changes will be overwritten. + *****/ + +END + +sub add { + print keywords "ADD(".$_[0].");\n"; +} + +foreach $word (@extrawords) { + add($word); +} + +open(camp, "camp.l") || die("Couldn't open camp.l"); + +# Search for the %% separator, after which the definitions start. +while (<camp>) { + if (/^%%\s*$/) { + last; # Break out of the loop. + } +} + +# Grab simple keyword definitions from camp.l +while (<camp>) { + if (/^%%\s*$/) { + last; # A second %% indicates the end of definitions. + } + if (/^([A-Za-z_][A-Za-z0-9_]*)\s*\{/) { + add($1); + } +} + +# Grab the special commands from the interactive prompt. +open(process, "process.cc") || dir("Couldn't open process.cc"); + +while (<process>) { + if (/^\s*ADDCOMMAND\(\s*([A-Za-z_][A-Za-z0-9_]*),/) { + add($1); + } +} + |