diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-16 22:02:54 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-16 22:02:54 -0800 |
commit | e070b389be002f955785ad8ccc8cdeb41f34a9f4 (patch) | |
tree | 2a94f9fff8f693e47105c5a44e1bb22148c30f96 /scalatexApi | |
parent | e4c385c0f0a5c2adf1ad9a8ed3be663d67918997 (diff) | |
download | hands-on-scala-js-e070b389be002f955785ad8ccc8cdeb41f34a9f4.tar.gz hands-on-scala-js-e070b389be002f955785ad8ccc8cdeb41f34a9f4.tar.bz2 hands-on-scala-js-e070b389be002f955785ad8ccc8cdeb41f34a9f4.zip |
ScalaTexPlugin now parses correctly
Diffstat (limited to 'scalatexApi')
3 files changed, 12 insertions, 8 deletions
diff --git a/scalatexApi/src/main/scala/scalaparser/ScalaSyntax.scala b/scalatexApi/src/main/scala/scalaparser/ScalaSyntax.scala index 264c79c..b7501a1 100644 --- a/scalatexApi/src/main/scala/scalaparser/ScalaSyntax.scala +++ b/scalatexApi/src/main/scala/scalaparser/ScalaSyntax.scala @@ -130,14 +130,9 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif ForCFlow(G) | "throw" ~ Expr(G) | "return" ~ optional(Expr(G)) | - NaiveAssignment(G) | - SimpleExpr() ~ ( - ArgumentExprs() ~ '=' ~ Expr(G) | - '.' ~ NaiveAssignment(G) - ) | + SimpleExpr() ~ '=' ~ Expr(G) | PostfixExpr(false) ~ optional("match" ~ '{' ~ CaseClauses ~ StrW("}", false) | Ascription(false)) ~ W(G) } - def NaiveAssignment(G: B = t) = rule{ Id() ~ '=' ~ Expr(G) } def IfCFlow(G: B = t) = rule { "if" ~ '(' ~ Expr() ~ ')' ~ zeroOrMore(Newline) ~ Expr(G) ~ optional(optional(Semi) ~ "else" ~ Expr(G)) } def WhileCFlow(G: B = t) = rule { "while" ~ '(' ~ Expr() ~ ')' ~ zeroOrMore(Newline) ~ Expr(G) } def TryCFlow(G: B = t) = rule { "try" ~ '{' ~ Block ~ StrW("}", G) ~ optional("catch" ~ '{' ~ CaseClauses ~ StrW("}", G)) ~ optional("finally" ~ Expr(G)) } diff --git a/scalatexApi/src/main/scala/scalaparser/syntax/Literals.scala b/scalatexApi/src/main/scala/scalaparser/syntax/Literals.scala index 8aaf664..6e8c79d 100644 --- a/scalatexApi/src/main/scala/scalaparser/syntax/Literals.scala +++ b/scalatexApi/src/main/scala/scalaparser/syntax/Literals.scala @@ -37,6 +37,7 @@ trait Literals { self: Parser with Basic with Identifiers => def EscapedChars = rule { '\\' ~ anyOf("rnt\\\"") } + // Note that symbols can take on the same values as keywords! def SymbolLiteral = rule { ''' ~ capture(Identifiers.PlainId | Identifiers.Keywords) } def CharacterLiteral = rule { ''' ~ capture(UnicodeExcape | EscapedChars | !'\\' ~ CharPredicate.from(isPrintableChar)) ~ ''' } diff --git a/scalatexApi/src/test/scala/scalaparser/SyntaxTest.scala b/scalatexApi/src/test/scala/scalaparser/SyntaxTest.scala index 10f6ed9..2c16962 100644 --- a/scalatexApi/src/test/scala/scalaparser/SyntaxTest.scala +++ b/scalatexApi/src/test/scala/scalaparser/SyntaxTest.scala @@ -209,7 +209,14 @@ object SyntaxTest extends TestSuite{ | A(A(A(A(A(A(A(A(A(A(A(A(A(A(A(A()))))))))))))))) |} """.stripMargin - + ) + * - check( + """ + |object L{ + | a.b = c + | a().b = c + |} + """.stripMargin ) } println("Checking") @@ -224,7 +231,6 @@ object SyntaxTest extends TestSuite{ * - checkFile("scalatexApi/src/test/scala/scalaparser/SyntaxTest.scala") - * - checkFile("scalatexApi/src/main/scala/scalatex/stages/Compiler.scala") * - checkFile("scalatexApi/src/main/scala/scalatex/stages/Parser.scala") * - checkFile("scalatexApi/src/main/scala/scalatex/stages/Trim.scala") @@ -234,6 +240,8 @@ object SyntaxTest extends TestSuite{ * - checkFile("scalatexApi/src/test/scala/scalatex/BasicTests.scala") * - checkFile("scalatexApi/src/test/scala/scalatex/ErrorTests.scala") * - checkFile("scalatexApi/src/test/scala/scalatex/TestUtil.scala") + + * - checkFile("scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala") } } |