53 lines
1.5 KiB
C#
53 lines
1.5 KiB
C#
namespace Upsilon.Parser
|
|
{
|
|
public static class SyntaxKindPrecedence
|
|
{
|
|
public enum Precedence
|
|
{
|
|
None = 0,
|
|
Or,
|
|
And,
|
|
Equality,
|
|
PlusMinus,
|
|
StarSlash,
|
|
Unary,
|
|
}
|
|
|
|
public static Precedence UnaryOperatorPrecedence(this SyntaxKind kind)
|
|
{
|
|
switch (kind)
|
|
{
|
|
case SyntaxKind.Plus:
|
|
case SyntaxKind.Minus:
|
|
case SyntaxKind.NotKeyword:
|
|
return Precedence.Unary;
|
|
default:
|
|
return Precedence.None;
|
|
}
|
|
}
|
|
|
|
public static Precedence BinaryOperatorPrecedence(this SyntaxKind kind)
|
|
{
|
|
switch (kind)
|
|
{
|
|
case SyntaxKind.EqualsEquals:
|
|
return Precedence.Equality;
|
|
case SyntaxKind.TildeEquals:
|
|
return Precedence.Equality;
|
|
case SyntaxKind.AndKeyword:
|
|
return Precedence.And;
|
|
case SyntaxKind.OrKeyword:
|
|
return Precedence.Or;
|
|
case SyntaxKind.Plus:
|
|
case SyntaxKind.Minus:
|
|
return Precedence.PlusMinus;
|
|
case SyntaxKind.Star:
|
|
case SyntaxKind.Slash:
|
|
return Precedence.StarSlash;
|
|
default:
|
|
return Precedence.None;
|
|
}
|
|
|
|
}
|
|
}
|
|
} |