summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-01-19 14:57:11 +0000
committerMartin Odersky <odersky@gmail.com>2004-01-19 14:57:11 +0000
commitc72f7b292fb5976c656ee666044e0a9b6ede1459 (patch)
treedd5bd1232b33fe34dd7c681a906aaebb287662c2
parent4e215f67917c35fadcd9a74390842634f2b103d0 (diff)
downloadscala-c72f7b292fb5976c656ee666044e0a9b6ede1459.tar.gz
scala-c72f7b292fb5976c656ee666044e0a9b6ede1459.tar.bz2
scala-c72f7b292fb5976c656ee666044e0a9b6ede1459.zip
*** empty log message ***
-rw-r--r--doc/reference/Makefile2
-rw-r--r--doc/reference/ScalaByExample.tex12
-rw-r--r--doc/reference/ScalaReference.tex2
-rw-r--r--sources/examples/parsers.scala28
-rw-r--r--sources/scala/Predef.scala7
-rw-r--r--sources/scala/tools/scalac/typechecker/Analyzer.scala2
6 files changed, 46 insertions, 7 deletions
diff --git a/doc/reference/Makefile b/doc/reference/Makefile
index cd188c7d45..136af940ce 100644
--- a/doc/reference/Makefile
+++ b/doc/reference/Makefile
@@ -24,7 +24,7 @@ LATEX_FORMATS += pdf
LATEX_TARGETS += $(LATEX_FORMATS:%=ScalaReference.%)
LATEX_TARGETS += $(LATEX_FORMATS:%=ScalaByExample.%)
-LATEX_SOURCES += Rationale.tex
+LATEX_SOURCES += ScalaRationale.tex
LATEX_SOURCES += ScalaByExample.tex
LATEX_SOURCES += ScalaReference.tex
LATEX_SOURCES += Scala.bib
diff --git a/doc/reference/ScalaByExample.tex b/doc/reference/ScalaByExample.tex
index ce4a535ef1..4241aafbe3 100644
--- a/doc/reference/ScalaByExample.tex
+++ b/doc/reference/ScalaByExample.tex
@@ -9,6 +9,8 @@
\usepackage{scaladefs}
\renewcommand{\todo}[1]{}
+
+
\ifpdf
\pdfinfo {
/Author (Martin Odersky)
@@ -20,7 +22,13 @@
}
\fi
-%\newenvironment{exercise}{\paragraph{Exercise}}{}
+\def\exercise{
+ \def\theresult{Exercise~\thesection.\arabic{result}}
+ \refstepcounter{result}
+ \trivlist\item[\hskip
+ \labelsep{\bf \theresult}]}
+\def\endexercise{\endtrivlist}
+
\newcommand{\rewriteby}[1]{\mbox{\tab\tab\rm(#1)}}
\renewcommand{\doctitle}{Scala By Example\\[33mm]\ }
@@ -37,7 +45,7 @@
\chapter{\label{chap:intro}Introduction}
-\input{ScalaRationale}
+\input{RationalePart}
The rest of this document is structured as
follows. Chapters~\ref{chap:example-one} and
diff --git a/doc/reference/ScalaReference.tex b/doc/reference/ScalaReference.tex
index 6393790e50..a2df3eadfc 100644
--- a/doc/reference/ScalaReference.tex
+++ b/doc/reference/ScalaReference.tex
@@ -111,7 +111,7 @@ Matthias Zenger \\[25mm]\ }
\chapter{Rationale}
-\input{ScalaRationale}
+\input{RationalePart}
\chapter{Lexical Syntax}
diff --git a/sources/examples/parsers.scala b/sources/examples/parsers.scala
index bef1e960cb..2ef0d778b9 100644
--- a/sources/examples/parsers.scala
+++ b/sources/examples/parsers.scala
@@ -58,6 +58,16 @@ abstract class ListParsers extends Parsers {
def expr : Parser = ident ||| number ||| list;
}
+abstract class ExprParsers extends Parsers {
+ def chr(p: char => boolean): Parser;
+ def chr(c: char): Parser = chr(d: char => d == c);
+
+ def digit : Parser = chr(Character.isDigit);
+ def number : Parser = digit &&& rep(digit);
+ def summand : Parser = number ||| chr('(') &&& expr &&& chr(')');
+ def expr : Parser = summand &&& rep(chr('+') &&& summand)
+}
+
class ParseString(s: String) extends Parsers {
type intype = int;
val input = 0;
@@ -68,12 +78,26 @@ class ParseString(s: String) extends Parsers {
}
}
-object Test {
+object TestList {
def main(args: Array[String]): unit =
if (args.length == 1) {
val ps = new ListParsers with ParseString(args(0));
- ps.exprs(input) match {
+ ps.expr(ps.input) match {
+ case Some(n) =>
+ System.out.println("parsed: " + args(0).substring(0, n));
+ case None =>
+ System.out.println("nothing parsed");
+ }
+ } else System.out.println("usage: java examples.Test <expr-string>");
+}
+
+object TestExpr {
+
+ def main(args: Array[String]): unit =
+ if (args.length == 1) {
+ val ps = new ExprParsers with ParseString(args(0));
+ ps.expr(ps.input) match {
case Some(n) =>
System.out.println("parsed: " + args(0).substring(0, n));
case None =>
diff --git a/sources/scala/Predef.scala b/sources/scala/Predef.scala
index 315c9a2fe6..81b2ce59f3 100644
--- a/sources/scala/Predef.scala
+++ b/sources/scala/Predef.scala
@@ -26,6 +26,10 @@ object Predef {
type boolean = scala.Boolean;
type unit = scala.Unit;
+ type String = java.lang.String;
+ type NullPointerException = java.lang.NullPointerException;
+ type Throwable = java.lang.Throwable;
+
/** Create an array with given elements.
*
* @param xs the elements to put in the array
@@ -63,4 +67,7 @@ object Predef {
val Text = scala.xml.Text;
+ type Function[-a,+b] = Function1[a,b];
+
}
+*
diff --git a/sources/scala/tools/scalac/typechecker/Analyzer.scala b/sources/scala/tools/scalac/typechecker/Analyzer.scala
index 76355d1a6e..e4c18047c1 100644
--- a/sources/scala/tools/scalac/typechecker/Analyzer.scala
+++ b/sources/scala/tools/scalac/typechecker/Analyzer.scala
@@ -362,7 +362,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
val grandparents = parents(i).parents();
if (grandparents.length > 0 && !parents(0).isSubType(grandparents(0)))
error(constrs(i).pos, "illegal inheritance;\n " + parents(0) +
- " does not conform to " + parents(i) + "'s supertype");
+ " does not conform to " + parents(i) + "'s supertype " + grandparents(0));
}
if ((bsym.flags & FINAL) != 0) {
error(constrs(i).pos, "illegal inheritance from final class");