diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-17 23:19:43 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-17 23:19:43 -0800 |
commit | 06ebb66bb30c787815170d96c7088a019bb00cae (patch) | |
tree | 7a2002f8ed195cabc7119dbdcdb175b4ea6a30a0 /scalatexApi/src/main/scala/scalaparser/syntax/Basic.scala | |
parent | 1af829be834bf655d8c0bd8b60509c75f7d59d8f (diff) | |
download | hands-on-scala-js-06ebb66bb30c787815170d96c7088a019bb00cae.tar.gz hands-on-scala-js-06ebb66bb30c787815170d96c7088a019bb00cae.tar.bz2 hands-on-scala-js-06ebb66bb30c787815170d96c7088a019bb00cae.zip |
Handle cases like `val __K__0__1___+++ = 10`
Diffstat (limited to 'scalatexApi/src/main/scala/scalaparser/syntax/Basic.scala')
-rw-r--r-- | scalatexApi/src/main/scala/scalaparser/syntax/Basic.scala | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/scalatexApi/src/main/scala/scalaparser/syntax/Basic.scala b/scalatexApi/src/main/scala/scalaparser/syntax/Basic.scala index bd142a1..157b0bb 100644 --- a/scalatexApi/src/main/scala/scalaparser/syntax/Basic.scala +++ b/scalatexApi/src/main/scala/scalaparser/syntax/Basic.scala @@ -33,4 +33,19 @@ trait Basic { self: Parser => def Lower = rule { "a" - "z" | "$" | "_" | CharPredicate.from(_.isLower) } def Upper = rule { "A" - "Z" | CharPredicate.from(_.isUpper) } } + /** + * Most keywords don't just require the correct characters to match, + * they have to ensure that subsequent characters *don't* match in + * order for it to be a keyword. This enforces that rule for key-words + * (W) and key-operators (O) which have different non-match criteria. + */ + object Key { + def W(s: String) = rule { + str(s) ~ !(Basic.Letter | Basic.Digit) + } + + def O(s: String) = rule { + str(s) ~ !Basic.OperatorChar + } + } } |