lib/scripts/keywords
changeset 52439 4cf3f6153eb8
parent 52438 7b5a5116f3af
child 52440 67f57dc115b9
--- a/lib/scripts/keywords	Mon Jun 24 17:17:17 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-#!/usr/bin/env perl
-#
-# Author: Makarius
-#
-# keywords.pl - generate outer syntax keyword files from session logs
-#
-
-use warnings;
-use strict;
-
-
-## arguments
-
-my ($keywords_name, $sessions) = @ARGV;
-
-
-## keywords
-
-my %keywords;
-
-sub set_keyword {
-  my ($name, $kind) = @_;
-  if (defined $keywords{$name} and $keywords{$name} ne $kind and $keywords{$name} ne "minor") {
-    if ($kind ne "minor") {
-      print STDERR "### Inconsistent declaration of keyword \"${name}\": $keywords{$name} vs ${kind}\n";
-      $keywords{$name} = $kind;
-    }
-  } else {
-    $keywords{$name} = $kind;
-  }
-}
-
-my %convert_kinds = (
-  "thy_begin" => "theory-begin",
-  "thy_end" => "theory-end",
-  "thy_heading1" => "theory-heading",
-  "thy_heading2" => "theory-heading",
-  "thy_heading3" => "theory-heading",
-  "thy_heading4" => "theory-heading",
-  "thy_load" => "theory-decl",
-  "thy_decl" => "theory-decl",
-  "thy_script" => "theory-script",
-  "thy_goal" => "theory-goal",
-  "qed_block" => "qed-block",
-  "qed_global" => "qed-global",
-  "prf_heading2" => "proof-heading",
-  "prf_heading3" => "proof-heading",
-  "prf_heading4" => "proof-heading",
-  "prf_goal" => "proof-goal",
-  "prf_block" => "proof-block",
-  "prf_open" => "proof-open",
-  "prf_close" => "proof-close",
-  "prf_chain" => "proof-chain",
-  "prf_decl" => "proof-decl",
-  "prf_asm" => "proof-asm",
-  "prf_asm_goal" => "proof-asm-goal",
-  "prf_script" => "proof-script"
-);
-
-my @emacs_kinds = (
-  "major",
-  "minor",
-  "control",
-  "diag",
-  "theory-begin",
-  "theory-switch",
-  "theory-end",
-  "theory-heading",
-  "theory-decl",
-  "theory-script",
-  "theory-goal",
-  "qed",
-  "qed-block",
-  "qed-global",
-  "proof-heading",
-  "proof-goal",
-  "proof-block",
-  "proof-open",
-  "proof-close",
-  "proof-chain",
-  "proof-decl",
-  "proof-asm",
-  "proof-asm-goal",
-  "proof-script"
-);
-
-sub collect_keywords {
-  while(<STDIN>) {
-    if (m/^\fOuter syntax keyword "([^"]*)" :: (\S*)/) {
-      my $name = $1;
-      my $kind = $2;
-      if (defined $convert_kinds{$kind}) { $kind = $convert_kinds{$kind} }
-      &set_keyword($name, $kind);
-    }
-    elsif (m/^\fOuter syntax keyword "([^"]*)"/) {
-      my $name = $1;
-      &set_keyword($name, "minor");
-    }
-  }
-}
-
-
-## Emacs output
-
-sub emacs_output {
-  my $file = $keywords_name eq "" ? "isar-keywords.el" : "isar-keywords-${keywords_name}.el";
-  open (OUTPUT, "> ${file}") || die "$!";
-  select OUTPUT;
-
-  print ";;\n";
-  print ";; Keyword classification tables for Isabelle/Isar.\n";
-  print ";; Generated from ${sessions}.\n";
-  print ";; *** DO NOT EDIT *** DO NOT EDIT *** DO NOT EDIT ***\n";
-  print ";;\n";
-
-  for my $kind (@emacs_kinds) {
-    my @names;
-    for my $name (keys(%keywords)) {
-      if ($kind eq "major" ? $keywords{$name} ne "minor" : $keywords{$name} eq $kind) {
-        if ($kind ne "minor" or $name =~ m/^[A-Za-z0-9_]+$/) {
-          push @names, $name;
-        }
-      }
-    }
-    @names = sort(@names);
-
-    print "\n(defconst isar-keywords-${kind}";
-    print "\n  '(";
-    my $first = 1;
-    for my $name (@names) {
-      $name =~ s/([\.\*\+\?\[\]\^\$])/\\\\$1/g;
-      if ($first) {
-        print "\"${name}\"";
-        $first = 0;
-      }
-      else {
-        print "\n    \"${name}\"";
-      }
-    }
-    print "))\n";
-  }
-  print "\n(provide 'isar-keywords)\n";
-
-  close OUTPUT;
-  select;
-  print STDERR "${file}\n";
-}
-
-
-## main
-
-&collect_keywords();
-&emacs_output();