summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/asy-list.pl
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-05-16 00:19:13 +0000
committerKarl Berry <karl@freefriends.org>2009-05-16 00:19:13 +0000
commitbab45528d65eaafe68a705dbb2a57075c7b7cbd8 (patch)
tree10b4ae2b5195c8dede153ab89359ec00f55f325f /Build/source/utils/asymptote/asy-list.pl
parent8643d90372e9c31e0f461c15c596b60a545bd7d3 (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-xBuild/source/utils/asymptote/asy-list.pl106
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";
+