diff options
author | Martin Odersky <odersky@gmail.com> | 2013-05-14 12:40:53 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-05-14 12:40:53 +0200 |
commit | 348dd53f384be31ec674814f9b9d97e89664b522 (patch) | |
tree | 2b8cc974b3422ee470df8a36cbe32126396d3182 /src/dotty/tools/dotc/parsing | |
parent | fec318dedaa10bf7ffaebd7aaf4a99e05ac0312a (diff) | |
download | dotty-348dd53f384be31ec674814f9b9d97e89664b522.tar.gz dotty-348dd53f384be31ec674814f9b9d97e89664b522.tar.bz2 dotty-348dd53f384be31ec674814f9b9d97e89664b522.zip |
Made precedence common between parsers and printers
Diffstat (limited to 'src/dotty/tools/dotc/parsing')
-rw-r--r-- | src/dotty/tools/dotc/parsing/Parsers.scala | 22 | ||||
-rw-r--r-- | src/dotty/tools/dotc/parsing/package.scala | 32 |
2 files changed, 33 insertions, 21 deletions
diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala index 0f2ba8531..d76553dd1 100644 --- a/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/src/dotty/tools/dotc/parsing/Parsers.scala @@ -15,12 +15,11 @@ import Names._ import Trees._ import Decorators._ import StdNames._ -import util.Chars.isScalaLetter import util.Positions._ import Types._ import Constants._ import NameOps._ -import scala.reflect.internal.Chars._ +import util.Chars._ import ScriptParsers._ import annotation.switch @@ -339,25 +338,6 @@ object Parsers { var opStack: List[OpInfo] = Nil - def precedence(operator: Name): Int = - if (operator eq nme.ERROR) -1 - else { - val firstCh = operator(0) - if (isScalaLetter(firstCh)) 1 - else if (operator.isOpAssignmentName) 0 - else firstCh match { - case '|' => 2 - case '^' => 3 - case '&' => 4 - case '=' | '!' => 5 - case '<' | '>' => 6 - case ':' => 7 - case '+' | '-' => 8 - case '*' | '/' | '%' => 9 - case _ => 10 - } - } - def checkAssoc(offset: Int, op: Name, leftAssoc: Boolean) = if (TreeInfo.isLeftAssoc(op) != leftAssoc) syntaxError( diff --git a/src/dotty/tools/dotc/parsing/package.scala b/src/dotty/tools/dotc/parsing/package.scala new file mode 100644 index 000000000..b829bd313 --- /dev/null +++ b/src/dotty/tools/dotc/parsing/package.scala @@ -0,0 +1,32 @@ +package dotty.tools.dotc + +import util.Chars._ +import core.Names.Name +import core.StdNames.nme +import core.NameOps._ + +package object parsing { + + def precedence(operator: Name): Int = + if (operator eq nme.ERROR) -1 + else { + val firstCh = operator(0) + if (isScalaLetter(firstCh)) 1 + else if (operator.isOpAssignmentName) 0 + else firstCh match { + case '|' => 2 + case '^' => 3 + case '&' => 4 + case '=' | '!' => 5 + case '<' | '>' => 6 + case ':' => 7 + case '+' | '-' => 8 + case '*' | '/' | '%' => 9 + case _ => 10 + } + } + + def minPrec = 0 + def maxPrec = 10 + +}
\ No newline at end of file |