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/asy-list.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/asy-list.pl')
-rwxr-xr-x | Build/source/utils/asymptote/asy-list.pl | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/asy-list.pl b/Build/source/utils/asymptote/asy-list.pl new file mode 100755 index 00000000000..4206adc4805 --- /dev/null +++ b/Build/source/utils/asymptote/asy-list.pl @@ -0,0 +1,106 @@ +#!/usr/bin/env perl +##### +# asy-list.pl +# +# Build asy-keywords.el from list of asy global functions and variables +# +##### + +open(keywords, "> asy-keywords.el") || + die("Couldn't open asy-keywords.el for writing."); + +print keywords <<END; +;; +;; This file is automatically generated by asy-list.pl. +;; Changes will be overwritten. +;; +(defvar asy-keywords-version "$ARGV[1]") + +END + +sub add { + print keywords $_[0]." "; +} + +sub openlist { + open(asylist, $ARGV[0]) || die("Couldn't open $ARGV[0]"); +} + +print keywords <<END; +(defvar asy-keyword-name '( +END + +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. + } +} + +while (<camp>) { + if (/^%%\s*$/) { + last; # A second %% indicates the end of definitions. + } + if (/^(\w+)\s*\{/) { + add($1); + } +} + +openlist(); + +while (<asylist>) { + if (/^(\w*)[^ ]* (\w*)\(.*/) { + push @types, $1; + push @functions, $2; + } + if (/^([^ ]*) (\w*);/) { + push @variables, $2; + } +} + +@saw{@types} = (); +@types = sort keys %saw; +undef %saw; + +@saw{@functions} = (); +@functions = sort keys %saw; +undef %saw; + +@saw{@variables} = (); +@variables = sort keys %saw; +undef %saw; + +print keywords <<END; +)) + +(defvar asy-type-name '( +END + +foreach(@types) { + print keywords $_ . " "; +} + +print keywords <<END; +)) + +(defvar asy-function-name '( +END + +foreach(@functions) { + print keywords $_ . " "; +} + +print keywords <<END; +)) + +(defvar asy-variable-name '( +END + +foreach(@variables) { + print keywords $_ . " "; +} + +print keywords "))\n"; + |