From d98247b9a0f814e9f0444b88a8de4c4ca0a6c230 Mon Sep 17 00:00:00 2001 From: Lior Spach <ls12@inf.ufpr.br> Date: Wed, 3 Jun 2015 18:23:28 -0300 Subject: [PATCH] combinators first --- src/main/scala/comb.scala | 48 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/main/scala/comb.scala diff --git a/src/main/scala/comb.scala b/src/main/scala/comb.scala new file mode 100644 index 0000000..8819899 --- /dev/null +++ b/src/main/scala/comb.scala @@ -0,0 +1,48 @@ +package CombParse + +import scala.util.parsing.combinator._ + + +class Arith extends JavaTokenParsers { + + def program : Parser[String] = { + def programInOut: Parser[Any] = "(" ~ opt( ident ~ opt(rep("," ~ ident)) ) ~ ")" + "program" ~> ident <~ opt(programInOut) ~ ";" + } + + def vars:Parser[List[String]] = + "var" ~ ident ~ opt(rep("," ~> ident)) ~ ":"~"integer"~";" ^^ + { + case "var" ~ id ~ optlstId ~ ":" ~ "integer"~";" => + optlstId match { + case Some(s) => + id :: s + case None => + List(id) + } + } + lazy val page = getpage(i.link) + lazy val metadata = i.toMetadata ++ getter.getMetadata(page) + lazy val downLink = metadata.find(_.key == "DownloadLink").get.value + lazy val filename = metadata.find(_.key == "NomeArquivo" ).get.value + def param:Parser[String] = + ident ~ opt(rep("," ~> ident)) ~ ":"~"integer"~";" +// def params:Parser[List[String]] = +// opt("(" ~ param ~ opt(rep("," ~ param)) ~ ")") +// def procedure:Parser[List[String]] = +// "procedure" ~ ident ~ params + +} + +object MyParser extends Arith { + val input = Seq( + "program lala23(adkwopadw23, faw4ea,aduwh28 ) ;", + "var a,v,b23,sd :integer;" + ) + + def main(args: Array[String]) { + println( + parseAll(program, input(0)).get + ) + } +} \ No newline at end of file -- GitLab