diff --git a/src/main/scala/comb.scala b/src/main/scala/comb.scala new file mode 100644 index 0000000000000000000000000000000000000000..8819899d39dec47640e0c11c8a3a1fa9f707c72a --- /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