move table formatting for grammar productions from HTML to CSS
diff --git a/Doc/html/style.css b/Doc/html/style.css
index a71541a..ce42ffb 100644
--- a/Doc/html/style.css
+++ b/Doc/html/style.css
@@ -108,6 +108,8 @@
                           padding: 0.05in; }
 .grammar-footer         { padding: 0.05in;
                           font-size: 85%; }
+.grammartoken           { font-family: "lucida typewriter", lucidatypewriter,
+                                       monospace; }
 
 .productions                  { background-color: #bbeeff; }
 .productions a:active         { color: #ff0000; }
@@ -115,7 +117,28 @@
 .productions a:visited:hover  { background-color: #99ccff; }
 .productions a:visited        { color: #551a8b; }
 .productions a:link           { color: #0000bb; }
-.productions table            { vertical-align: baseline; }
+.productions table            { vertical-align: baseline;
+                                empty-cells: show; }
+.productions > table td,
+.productions > table th       { padding: 2px; }
+.productions > table td:first-child,
+.productions > table td:last-child {
+                                font-family: "lucida typewriter",
+                                             lucidatypewriter,
+                                             monospace;
+                                }
+/* same as the second selector above, but expressed differently for Opera */
+.productions > table td:first-child + td + td {
+                                font-family: "lucida typewriter",
+                                             lucidatypewriter,
+                                             monospace;
+                                vertical-align: baseline;
+                                }
+.productions > table td:first-child + td {
+                                padding-left: 1em;
+                                padding-right: 1em;
+                                }
+.productions > table tr       { vertical-align: baseline; }
 
 .email                  { font-family: avantgarde, sans-serif; }
 .mailheader             { font-family: avantgarde, sans-serif; }
diff --git a/Doc/perl/python.perl b/Doc/perl/python.perl
index 3b04803..be2443d 100644
--- a/Doc/perl/python.perl
+++ b/Doc/perl/python.perl
@@ -791,7 +791,7 @@
         }
         $BackpatchGrammarFiles{"$CURRENT_FILE"} = 1;
     }
-    return "<a href=\"$target\">$token</a>" . $_;
+    return "<a class='grammartoken' href=\"$target\">$token</a>" . $_;
 }
 
 sub do_cmd_grammartoken{
@@ -809,7 +809,7 @@
     $DefinedGrammars{$lang} .= $_;
     return ("<dl><dd class=\"grammar\">\n"
             . "<div class=\"productions\">\n"
-            . "<table cellpadding=\"2\">\n"
+            . "<table>\n"
             . translate_commands(translate_environments($_))
             . "</table>\n"
             . "</div>\n"
@@ -828,12 +828,12 @@
     my $lang = $CURRENT_GRAMMAR;
     local($CURRENT_TOKEN) = $token;
     if ($lang eq '*') {
-        return ("<tr valign=\"baseline\">\n"
-                . "    <td><code>$token</code></td>\n"
-                . "    <td>&nbsp;::=&nbsp;</td>\n"
-                . "    <td><code>"
+        return ("<tr>\n"
+                . "    <td>$token</td>\n"
+                . "    <td>::=</td>\n"
+                . "    <td>"
                 . translate_commands($defn)
-                . "</code></td></tr>"
+                . "</td></tr>"
                 . $_);
     }
     my $target;
@@ -844,13 +844,13 @@
         $target = "$CURRENT_FILE\#tok-$lang-$token";
     }
     $TokenToTargetMapping{"$CURRENT_GRAMMAR:$token"} = $target;
-    return ("<tr valign=\"baseline\">\n"
-            . "    <td><code><a id='tok-$token' xml:id='tok-$token'>"
-            . "$token</a></code></td>\n"
-            . "    <td>&nbsp;::=&nbsp;</td>\n"
-            . "    <td><code>"
+    return ("<tr>\n"
+            . "    <td><a id='tok-$token' xml:id='tok-$token'>"
+            . "$token</a></td>\n"
+            . "    <td>::=</td>\n"
+            . "    <td>"
             . translate_commands($defn)
-            . "</code></td></tr>"
+            . "</td></tr>"
             . $_);
 }
 
@@ -858,9 +858,9 @@
     local($_) = @_;
     my $defn = next_argument();
     $defn =~ s/^( +)/'&nbsp;' x length $1/e;
-    return ("<tr valign=\"baseline\">\n"
-            . "    <td>&nbsp;</td>\n"
-            . "    <td>&nbsp;</td>\n"
+    return ("<tr>\n"
+            . "    <td></td>\n"
+            . "    <td></td>\n"
             . "    <td><code>"
             . translate_commands($defn)
             . "</code></td></tr>"