diff options
author | michelou <michelou@epfl.ch> | 2006-06-12 14:18:13 +0000 |
---|---|---|
committer | michelou <michelou@epfl.ch> | 2006-06-12 14:18:13 +0000 |
commit | 1c43cfe216a0d759568a964a16345ea773f32211 (patch) | |
tree | cc9c93e37b6817c14e1334d910b9012e408c85b8 /src/manual/scala/tools | |
parent | de843e4a74769be951e28d7f744dc812e3eed83e (diff) | |
download | scala-1c43cfe216a0d759568a964a16345ea773f32211.tar.gz scala-1c43cfe216a0d759568a964a16345ea773f32211.tar.bz2 scala-1c43cfe216a0d759568a964a16345ea773f32211.zip |
moved docs/man/src to src/manual and updated bu...
moved docs/man/src to src/manual and updated build.xml
Diffstat (limited to 'src/manual/scala/tools')
-rw-r--r-- | src/manual/scala/tools/docutil/EmitHtml.scala | 349 | ||||
-rw-r--r-- | src/manual/scala/tools/docutil/EmitManPage.scala | 165 | ||||
-rw-r--r-- | src/manual/scala/tools/docutil/ManPage.scala | 68 | ||||
-rw-r--r-- | src/manual/scala/tools/docutil/resources/css/style.css | 66 | ||||
-rw-r--r-- | src/manual/scala/tools/docutil/resources/images/external.gif | bin | 0 -> 289 bytes | |||
-rw-r--r-- | src/manual/scala/tools/docutil/resources/images/scala_logo.png | bin | 0 -> 4751 bytes | |||
-rw-r--r-- | src/manual/scala/tools/docutil/resources/index.html | 211 |
7 files changed, 859 insertions, 0 deletions
diff --git a/src/manual/scala/tools/docutil/EmitHtml.scala b/src/manual/scala/tools/docutil/EmitHtml.scala new file mode 100644 index 0000000000..a7c10fd24a --- /dev/null +++ b/src/manual/scala/tools/docutil/EmitHtml.scala @@ -0,0 +1,349 @@ +/* NSC -- new Scala compiler + * Copyright 2005-2006 LAMP/EPFL + * @author Stephane Micheloud + * Adapted from Lex Spoon's sbaz manual + */ +//$Id: $ + +package scala.tools.docutil + +object EmitHtml { + import scala.xml.{Node, NodeBuffer, NodeSeq, XML} + import ManPage._ + + val out = Console + + def escape(text: String) = + text.replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + +/* */ + def emitSection(section: Section, depth: int): Unit = { + def emitText(text: AbstractText): Unit = + text match { + case seq:SeqText => + seq.components.foreach(emitText) + + case Text(text) => + out.print(escape(text)) + + case MDash => + out.print("—") + + case NDash => + out.print("–") + + case Bold(text) => + out.print("<b>") + emitText(text) + out.print("</b>") + + case Italic(text) => + out.print("<i>") + emitText(text) + out.print("</i>") + + case Emph(text) => + out.print("<em>") + emitText(text) + out.print("</em>") + + case Mono(text) => + out.print("<code>") + emitText(text) + out.print("</code>") + + case Quote(text) => + out.print("\"") + emitText(text) + out.print("\"") + + case DefinitionList(definitions @ _*) => + out.println("<ins><dl>") + for (val d <- definitions) { + out.println("<dt>") + emitText(d.term) + out.println("\n</dt>") + out.println("<dd>") + emitText(d.description) + out.println("</dd>") + } + out.println("</dl></ins>") + + case Link(label, url) => + out.print("<a href=\"" + url + "\">") + emitText(label) + out.print("</a>") + + case _ => + error("unknown text node " + text) + } + + def emitParagraph(para: Paragraph): Unit = + para match { + case TextParagraph(text) => + out.println("<p>") + emitText(text) + out.println("</p>") + + case BlockQuote(text) => + out.println("<blockquote><p>") + emitText(text) + out.println("</p></blockquote>") + + case CodeSample(text) => + out.print("<pre>") + out.print(escape(text)) + out.println("</pre>") + + case lst:BulletList => + out.println("<ul>") + for (val item <- lst.items) { + out.print("<li>") + emitText(item) + out.println("</li>") + } + out.println("</ul>") + + case lst:NumberedList => + out.println("<ol>") + for(val item <- lst.items) { + out.print("<li>") + emitText(item) + } + out.println("</ol>") + + case TitledPara(title, text) => + out.println("<p><strong>" + escape(title) + "</strong></p>") + emitText(text) + + case EmbeddedSection(sect) => + emitSection(sect, depth + 1) + + case _ => + error("unknown paragraph node " + para) + } + + val name = section.title.replaceAll("\\p{Space}", "_").toLowerCase() + out.println("\n<h" + depth + " id=\"" + name + "\">" + + section.title + + "</h" + depth + ">") + section.paragraphs.foreach(emitParagraph) + } + + private def emit3columns(col1: String, col2: String, col3: String) = { + out.println("<div style=\"float:left;\">") + out.println(col1) + out.println("</div>") + out.println("<div style=\"float:right;\">") + out.println(col3) + out.println("</div>") + out.println("<div style=\"text-align:center;\">") + out.println(col2) + out.println("</div>") + } + + private def emitHeader(col1: String, col2: String, col3: String) = { + out.println("<!-- header -->") + out.println("<div style=\"margin: 0 0 2em 0;\">") + emit3columns(col1, col2, col3) + out.println("</div>") + } + + private def emitFooter(col1: String, col2: String, col3: String) = { + out.println("<!-- footer -->") + out.println("<div style=\"margin: 2em 0 0 0;\">") + emit3columns(col1, col2, col3) + out.println("</div>") + } + + def emitDocument(document: Document, addDocType: Boolean) = { + if (addDocType) { + out.println("<?xml version=\"1.1\" encoding=\"" + document.encoding + "\"?>") + out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">") + } + out.println("<html xml:lang=\"en\">") + + out.println("<head>") + out.println("<title>" + document.title + " man page</title>") + out.println("<meta http-equiv=\"Content-Language\" content=\"en\"/>") + out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + + document.encoding + "\"/>") + out.println("<meta name=\"Author\" content=\"" + document.author + "\"/>") + out.println("<style type=\"text/css\">") + out.println(" <!--") + out.println(" blockquote, pre { margin:1em 4em 1em 4em; }") + out.println(" p { margin:0 2em 0 2em; text-align:justify; }") + out.println(" //-->") + out.println("</style>") + out.println("</head>") + + out.println("<body>") + val name = document.title + "(" + document.category.id + ")" + emitHeader(name, "" + document.category, name) + + document.sections.foreach(s => emitSection(s, 3)) + + emitFooter("version " + document.version, document.date, name) + + out.println("</body>") + out.println("</html>") + } +/* */ +/* + private def group(ns: Iterable[NodeSeq]): NodeSeq = { + val zs = new NodeBuffer + for (val z <- ns) { zs &+ z } + zs + } + + def emitSection(section: Section, depth: int): NodeSeq = { + def emitText(text: AbstractText): NodeSeq = text match { + case seq:SeqText => + group(seq.components.toList.map(item => emitText(item))) + + case Text(text) => + scala.xml.Text(escape(text)) + + case MDash => + scala.xml.Text("—") + + case NDash => + scala.xml.Text("–") + + case Bold(text) => + <b>{emitText(text)}</b> + + case Italic(text) => + <i>{emitText(text)}</i> + + case Emph(text) => + <em>{emitText(text)}</em> + + case Mono(text) => + <code>{emitText(text)}</code> + + case Quote(text) => + emitText("\"" & text & "\"") + + case DefinitionList(definitions @ _*) => + <ins><dl> + {definitions.toList.map(d => + <dt>{emitText(d.term)}</dt> + <dd>{emitText(d.description)}</dd> + )} + </dl></ins> + + case Link(label, url) => + <a href={url}>{emitText(label)}</a> + + case _ => + error("unknown text node " + text) + } + + def emitParagraph(para: Paragraph): NodeSeq = para match { + case TextParagraph(text) => + <p>{emitText(text)}</p> + + case BlockQuote(text) => + <blockquote>{emitText(text)}</blockquote> + + case CodeSample(text) => + <blockquote><pre>{escape(text)}</pre></blockquote> + + case lst:BulletList => + <ul> + {lst.items.toList.map(item => <li>{emitText(item)}</li>)} + </ul> + + case lst:NumberedList => + <ol> + {lst.items.toList.map(item => <li>{emitText(item)}</li>)} + </ol> + + case TitledPara(title, text) => + <p><strong>{escape(title)}</strong></p> + {emitText(text)} + + case EmbeddedSection(sect) => + {emitSection(sect, depth + 1)} + + case _ => + error("unknown paragraph node " + para) + } + + val name = section.title.replaceAll("\\p{Space}", "_").toLowerCase() + <h3 id={name}>{section.title}</h3>.concat( + group(section.paragraphs.toList.map(p => emitParagraph(p)))) + } + + private def emit3columns(col1: String, col2: String, col3: String): NodeSeq = + <div style="float:left;">{col1}</div> + <div style="float:right;">{col3}</div> + <div style="text-align:center;">{col2}</div> + <div style="clear:both;"></div> + + private def emitHeader(col1: String, col2: String, col3: String): NodeSeq = + <div style="margin: 0 0 2em 0;"> + {emit3columns(col1, col2, col3)} + </div> + + private def emitFooter(col1: String, col2: String, col3: String): NodeSeq = { + scala.xml.Comment("footer") + <div style="margin: 2em 0 0 0;"> + {emit3columns(col1, col2, col3)} + </div> + } + + def emitDocument(document: Document, addDocType: Boolean) = { + val name = document.title + "(" + document.category.id + ")" + val doc = + <html xml:lang="en"> + <head> + <title>{document.title}</title> + <meta http-equiv="Content-Language" content="en"/> + <meta http-equiv="Content-Type" content={"text/html; charset=" + document.encoding}/> + <meta name="Author" content={document.author}/> + <style type="text/css"> + {" blockquote, pre { margin:1em 4em 1em 4em; }\n" + + " p { margin:1em 2em 1em 2em; text-align:justify; }\n"} + </style> + </head> + <body> + {emitHeader(name, "" + document.category, name)} + {document.sections.map(s => emitSection(s, 2))} + {emitFooter("version " + document.version, document.date, name)} + </body> + </html> + out.println(doc) +/* + val w = new java.io.StringWriter + val id = scala.xml.dtd.PublicID("PUBLIC", null) + val dtd = null //scala.xml.dtd.DEFAULT(true, "") + val doctype = scala.xml.dtd.DocType("html", id, null) //List(dtd)) + XML.write(w, doc, document.encoding, true/ *xmlDecl* /, doctype) + out.println(w.toString()) +*/ + } +*/ + def main(args: Array[String]) = { + if (args.length < 1) { + System.err.println("usage: EmitHtml <classname> [ -short ]") + exit(1) + } + try { + val cl = ClassLoader.getSystemClassLoader() + val clasz = cl.loadClass(args(0)) + val meth = clasz.getDeclaredMethod("manpage", Predef.Array[Class]()) + val doc = meth.invoke(null, Predef.Array[Object]()).asInstanceOf[Document] + val addDocType = (args.length > 1 && "-doctype".equals(args(1))) + emitDocument(doc, addDocType) + } catch { + case ex: Exception => + ex.printStackTrace() + System.err.println("Error in EmitHtml") + exit(1) + } + } +} diff --git a/src/manual/scala/tools/docutil/EmitManPage.scala b/src/manual/scala/tools/docutil/EmitManPage.scala new file mode 100644 index 0000000000..888a4cac5a --- /dev/null +++ b/src/manual/scala/tools/docutil/EmitManPage.scala @@ -0,0 +1,165 @@ +/* NSC -- new Scala compiler + * Copyright 2005-2006 LAMP/EPFL + * @author Stephane Micheloud + * Adapted from Lex Spoon's sbaz manual + */ +//$Id: $ + +package scala.tools.docutil + +// For help on man pages see: +// - http://www.linuxfocus.org/English/November2003/article309.shtml +// - http://www.schweikhardt.net/man_page_howto.html + +object EmitManPage { + import ManPage._ + + val out = Console + + def escape(text: String) = + text.replaceAll("-", "\\-") + + def emitSection(section: Section, depth: int): Unit = { + def emitText(text: AbstractText): Unit = + text match { + case seq:SeqText => + seq.components.foreach(emitText) + + case Text(text) => + out.print(escape(text)) + + case NDash | MDash => + out.print("\\-") + + case Bold(text) => + out.print("\\fB") + emitText(text) + out.print("\\fR") + + case Italic(text) => + out.print("\\fI") + emitText(text) + out.print("\\fR") + + case Emph(text) => + out.print("\\fI") + emitText(text) + out.print("\\fI") + + case Mono(text) => + out.print("") + emitText(text) + out.print("") + + case Quote(text) => + out.print("\"") + emitText(text) + out.print("\"") + + case DefinitionList(definitions @ _*) => + var n = definitions.length + for (val d <- definitions) { + out.println(".TP") + emitText(d.term) + out.println + emitText(d.description) + if (n > 1) { out.println; n = n - 1 } + } + + case Link(label, url) => + emitText(label) + + case _ => + error("unknown text node " + text) + } + + def emitParagraph(para: Paragraph): Unit = + para match { + case TextParagraph(text) => + out.println(".PP") + emitText(text) + out.println + + case BlockQuote(text) => + out.println(".TP") + emitText(text) + out.println + + case CodeSample(text) => + out.println("\n.nf") + out.print(text) + out.println("\n.fi") + + case lst:BulletList => + out.println("<ul>") + for(val item <- lst.items) { + out.print("<li>") + emitText(item) + } + out.println("</ul>") + + case lst:NumberedList => + out.println("<ol>") + for(val item <- lst.items) { + out.print("<li>") + emitText(item) + } + out.println("</ol>") + + case TitledPara(title, text) => + out.println("<p><strong>" + escape(title) + "</strong>") + emitText(text) + + case EmbeddedSection(sect) => + emitSection(sect, depth+1) + + case _ => + error("unknown paragraph node " + para) + } + + out.println(".\\\"") + out.println(".\\\" ############################## " + section.title + " ###############################") + out.println(".\\\"") + val tag = if (depth > 1) ".SS" else ".SH" + val title = + if (section.title.indexOf(" ") > 0) "\"" + section.title + "\"" + else section.title + out.println(tag + " " + title) + + section.paragraphs.foreach(emitParagraph) + } + + def emitDocument(doc: Document) = { + out.println(".\\\" ##########################################################################") + out.println(".\\\" # __ #") + out.println(".\\\" # ________ ___ / / ___ Scala 2 On-line Manual Pages #") + out.println(".\\\" # / __/ __// _ | / / / _ | (c) 2002-2006, LAMP/EPFL #") + out.println(".\\\" # __\\ \\/ /__/ __ |/ /__/ __ | #") + out.println(".\\\" # /____/\\___/_/ |_/____/_/ | | http://scala.epfl.ch/ #") + out.println(".\\\" # |/ #") + out.println(".\\\" ##########################################################################") + out.println(".\\\"") + out.println(".\\\" Process this file with nroff -man scala.1") + out.println(".\\\"") + out.println(".TH " + doc.title + " " + doc.category.id + + " \"" + doc.date + "\" \"version " + doc.version + + "\" \"" + doc.category + "\"") + + doc.sections.foreach(s => emitSection(s, 1)) + } + + def main(args: Array[String]) = + try { + val cl = ClassLoader.getSystemClassLoader() + val clasz = cl.loadClass(args(0)) + val meth = clasz.getDeclaredMethod("manpage", Predef.Array[Class]()) + val doc = meth.invoke(null, Predef.Array[Object]()).asInstanceOf[Document] + emitDocument(doc) + } catch { + case ex: Exception => + ex.printStackTrace() + System.err.println("Error in EmitManPage") + exit(1) + } + +} diff --git a/src/manual/scala/tools/docutil/ManPage.scala b/src/manual/scala/tools/docutil/ManPage.scala new file mode 100644 index 0000000000..3d23d69064 --- /dev/null +++ b/src/manual/scala/tools/docutil/ManPage.scala @@ -0,0 +1,68 @@ +/* NSC -- new Scala compiler + * Copyright 2005-2006 LAMP/EPFL + * @author Stephane Micheloud + * Adapted from Lex Spoon's sbaz manual + */ +//$Id: $ + +package scala.tools.docutil + +object ManPage { + abstract class AbstractText { + def &(more: AbstractText) = SeqText(this, more) + } + + case class SeqText(components: AbstractText*) extends AbstractText + case class Text(text: String) extends AbstractText + case object MDash extends AbstractText + case object NDash extends AbstractText + case class Bold(contents: AbstractText) extends AbstractText + case class Italic(contents: AbstractText) extends AbstractText + case class Emph(contents: AbstractText) extends AbstractText + case class Mono(contents: AbstractText) extends AbstractText + case class Quote(contents: AbstractText) extends AbstractText + implicit def str2text(str: String) = Text(str) + + case class Definition(term: AbstractText, description: AbstractText) + case class DefinitionList(definitions: Definition*) extends AbstractText + case class Link(label: AbstractText, url: String) extends AbstractText + + case class DefnItem(header: String, text: AbstractText) + + abstract class Paragraph + case class TextParagraph(text: AbstractText) extends Paragraph + case class CodeSample(text: String) extends Paragraph + case class BlockQuote(text: AbstractText) extends Paragraph + implicit def text2para(text: AbstractText): Paragraph = TextParagraph(text) + implicit def str2para(str: String) = text2para(str2text(str)) + + case class BulletList(items: AbstractText*) extends Paragraph + case class NumberedList(items: AbstractText*) extends Paragraph + case class TitledPara(title: String, text: AbstractText) extends Paragraph + + case class EmbeddedSection(section: Section) extends Paragraph + implicit def section2Para(section: Section) = EmbeddedSection(section) + + case class Section(title: String, paragraphs: Paragraph*) + + object Category extends Enumeration { + val USER_COMMANDS = Value(1, "USER COMMANDS") + val SYSTEM_CALLS = Value(2, "SYSTEM CALLS") + val SUBROUTINES = Value(3, "SUBROUTINES") + val DEVICES = Value(4, "DEVICES") + val FILE_FORMATS = Value(5, "FILE FORMAT DESCRIPTIONS") + val GAMES = Value(6, "GAMES") + val MISCELLANEOUS = Value(7, "MISCELLANEOUS") + } + + abstract class Document { + import Category._ + var title: String = "" + var author: String = "" + var date: String = "" + var version: String = "" + var category: Value = USER_COMMANDS + var encoding: String = "iso-8859-1" + var sections: List[Section] = Nil + } +} diff --git a/src/manual/scala/tools/docutil/resources/css/style.css b/src/manual/scala/tools/docutil/resources/css/style.css new file mode 100644 index 0000000000..3072be4012 --- /dev/null +++ b/src/manual/scala/tools/docutil/resources/css/style.css @@ -0,0 +1,66 @@ +.SansSerif { + font-family: Arial, Helvetica, sans-serif; +} + +.ContentList { font-size: 90%; style: margin-left: 3.4em; } + +.Note { + margin-left: 4em; + margin-right: 4em; + font-size: 90%; +} + +/* see http://www.maxdesign.com.au/presentation/external/ */ +a.external span { + position: absolute; + left: -5000px; + width: 4000px; +} + +a.external:link { + background: url(../images/external.gif) no-repeat 100% 0; + padding: 0px 20px 0px 0px; +} + +a.external:visited { + color: purple; + background-color: white; + background: url(../images/external.gif) no-repeat 100% -100px; + padding: 0px 20px 0px 0px; +} + +a.external:hover { + color: red; + background-color: white; + background: url(../images/external.gif) no-repeat 100% -200px; + padding: 0px 20px 0px 0px; +} + +h2 { font-family: Arial, Helvetica, sans-serif; } + +h3 { + margin-left: 1.4em; + margin-bottom: .1em; + font-family: Arial, Helvetica, sans-serif; +} + +hr { + margin: 1em 0 1em 0; +} + +img { + border:none; +} + +li { + margin-left: 1.7em; +} + +span.tool { + font-family: Courier, Sans-Serif; + font-weight: bold; +} + +th { + white-space: nowrap; +} diff --git a/src/manual/scala/tools/docutil/resources/images/external.gif b/src/manual/scala/tools/docutil/resources/images/external.gif Binary files differnew file mode 100644 index 0000000000..dc962b779d --- /dev/null +++ b/src/manual/scala/tools/docutil/resources/images/external.gif diff --git a/src/manual/scala/tools/docutil/resources/images/scala_logo.png b/src/manual/scala/tools/docutil/resources/images/scala_logo.png Binary files differnew file mode 100644 index 0000000000..f89a81c1af --- /dev/null +++ b/src/manual/scala/tools/docutil/resources/images/scala_logo.png diff --git a/src/manual/scala/tools/docutil/resources/index.html b/src/manual/scala/tools/docutil/resources/index.html new file mode 100644 index 0000000000..3a728604ca --- /dev/null +++ b/src/manual/scala/tools/docutil/resources/index.html @@ -0,0 +1,211 @@ +<?xml version="1.1" encoding="iso-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xml:lang="en"> + +<head> + <title>Scala Development Tools</title> + <meta http-equiv="Content-Script-Type" content="text/javascript"/> + <meta http-equiv="Content-Style-Type" content="text/css"/> + <meta http-equiv="Content-Language" content="en"/> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> + <meta name="Copyright" content="(C) 2002-2006 LAMP/EPFL"/> + <meta name="Language" content="en"/> + <meta name="Description" content="The Scala Programming Language"/> + <meta name="Author" content="Stephane Micheloud"/> + <link rel="stylesheet" type="text/css" media="all" href="./css/style.css"/> +</head> + +<body> +<div style="float:left; width:20%;"> + <a href="http://scala.epfl.ch/"> + <img src="images/scala_logo.png" alt="Scala" width="80" height="55"/></a> +</div> +<div style="float:right; width:20%;"> + <!-- Documentation Contents --> +</div> +<div style="text-align:center; margin:1em;"> + <h2>Scala Tools and Utilities</h2> +</div> +<div style="clear:both;"/> + +<div style="background-color:#eeeeee; margin:1.6em; padding:0.4em;"> + +<h3>General</h3> + +<ul class="ContentList"> + <li> + <a href="#general"><b class="SansSerif">General Information</b></a> + <!--(file structure, classpath, how classes are found, changes)--> + (classpath, how classes are found) + </li> +</ul> + +<h3>Standard Scala Tools and Utilities</h3> + +<ul class="ContentList"> + <li> + <a href="#basic"><b class="SansSerif">Basic Tools</b></a> (<code>sbaz</code>, + <code>scala</code>, <code>scalac</code>, <code>scaladoc</code>, + <code>scalaint</code>, <code>scalap</code>, <code>scalascript</code>) + </li> +</ul> +</div> + +<p style="font-size: 90%; margin-left: 2em; margin-right: 2em;"> + <b>NOTE</b> - Some tools have separate reference pages for Windows, Linux and Solaris + to accommodate minor differences in configuration and usage -- for example, the character + used to specify directory separators may be different. +</p> + +<hr/> + +<h2 id="general"> + General Information +</h2> +<p> + The following documents contain important information you will need to + know to get the most out of the SDK tools. +</p> + + +<table cellspacing="0" cellpadding="2"> +<!-- +<tr> + <td> + <b>JDK File Structure</B> + </td> + <td NOWRAP> + [<A href="solaris/jdkfiles.html">Solaris</A>] + [<A href="linux/jdkfiles.html">Linux</A>] + [<A href="windows/jdkfiles.html">Windows</A>] + </td> +</tr> +--> +<tr> + <td> + <b>Setting the Classpath</B> + </td> + <td> + [<a class="external" + href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/classpath.html">Solaris and Linux</a>] + [<a class="external" + href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/classpath.html">Windows</a>] + </td> +</tr> + +<tr> + <td> + <b>How Classes are Found</B> + </td> + <td> + [<a class="external" + href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/findingclasses.html">Solaris, Linux and Windows</a>] + </td> +</tr> +</table> + +<hr> +<h2 id="basic"> + Basic Tools +</h2> + +<p> + These tools are the foundation of the Scala SDK. They are the tools you + use to create and build applications. +</p> + +<table cellspacing="0" cellpadding="2" style="width:100%;"> + <tr> + <th>Tool Name</th> + <th>Brief Description</th> + <th>Links to Reference Pages</th> + </tr> + <tr> + <td width="13%" valign="top"> + <span class="tool">sbaz</span> + </td> + <td width="70%" valign="top"> + The Scala sharing tool. + </td> + <td width="17%" valign="top"> + [<a href="sbaz.html">Solaris, Linux and Windows</a>] + </td> + </tr> + <tr> + <td width="13%" valign="top"> + <span class="tool">scala</span> + </td> + <td width="70%" valign="top"> + The launcher for Scala applications. + </td> + <td width="17%" valign="top"> + [<a href="scala.html">Solaris, Linux and Windows</a>] + </td> + </tr> + <tr> + <td width="13%" valign="top"> + <span class="tool">scalac</span> + </td> + <td width="70%" valign="top"> + The compiler for the Scala programming language. + </td> + <td width="17%" valign="top"> + [<a href="scalac.html">Solaris, Linux and Windows</a>] + </td> + </tr> + <tr> + <td width="13%" valign="top"> + <span class="tool">scaladoc</span> + </td> + <td width="70%" valign="top"> + The API document generator. + </td> + <td width="17%" valign="top"> + [<a href="scaladoc.html">Solaris, Linux and Windows</a>] + </td> + </tr> + <tr> + <td width="13%" valign="top"> + <span class="tool">scalaint</span> + </td> + <td width="70%" valign="top"> + The interactive interpreter to the Scala programming language. + </td> + <td width="17%" valign="top"> + [<a href="scalaint.html">Solaris, Linux and Windows</a>] + </td> + </tr> + <tr> + <td width="13%" valign="top"> + <span class="tool">scalap</span> + </td> + <td width="70%" valign="top"> + The Scala class file decoder. + </td> + <td width="17%" valign="top"> + [<a href="scalap.html">Solaris, Linux and Windows</a>] + </td> + </tr> + <tr> + <td width="13%" valign="top"> + <span class="tool">scalascript</span> + </td> + <td width="70%" valign="top"> + The Scala scripting tool. + </td> + <td width="17%" valign="top"> + [<a href="scalascript.html">Solaris, Linux and Windows</a>] + </td> + </tr> +</table> + + <hr/> + + <div style="font-size:x-small;"> + Copyright (c) 2002-2006 <a href="http://www.epfl.ch/">EPFL</a>, + Lausanne, unless specified otherwise.<br/> + All rights reserved. + </div> + +</body> +</html> |