blob: eacad21cd81384cd6b44450f6b835eb88fe399bd (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import scala.io.Source
import scala.util.parsing.combinator.Parsers
import scala.util.parsing.input.Reader
import scala.util.parsing.input.Position
object DemoApp extends App {
val parsers = new DemoParsers
val reader = new DemoReader(10)
val result = parsers.startsWith("s").*(reader)
Console println result
}
class DemoReader(n: Int) extends Reader[String] {
def atEnd = n == 0
def first = "s" + n
def rest = new DemoReader(n - 1)
def pos = new Position {
def line = 0
def column = 0
def lineContents = first
}
println("reader: " + n)
}
class DemoParsers extends Parsers {
type Elem = String
def startsWith(prefix: String) = acceptIf(_ startsWith prefix)("Error: " + _)
}
|