Bitshift
This commit is contained in:
@@ -14,17 +14,18 @@ const (
|
||||
OR
|
||||
AND
|
||||
NOT
|
||||
ASSIGN // := or =
|
||||
EQUALS // ==
|
||||
LESSGREATER // > or <
|
||||
BITWISE_OR // |
|
||||
BITWISE_XOR // ^
|
||||
BITWISE_AND // &
|
||||
SUM // + or -
|
||||
PRODUCT // * or / or %
|
||||
PREFIX // -X or !X
|
||||
CALL // myFunction(X)
|
||||
INDEX // array[index]
|
||||
ASSIGN // := or =
|
||||
EQUALS // ==
|
||||
LESSGREATER // > or <
|
||||
BITWISE_OR // |
|
||||
BITWISE_XOR // ^
|
||||
BITWISE_AND // &
|
||||
BITWISE_SHIFT // << or >>
|
||||
SUM // + or -
|
||||
PRODUCT // * or / or %
|
||||
PREFIX // -X or !X
|
||||
CALL // myFunction(X)
|
||||
INDEX // array[index]
|
||||
)
|
||||
|
||||
var precedences = map[token.TokenType]int{
|
||||
@@ -42,6 +43,8 @@ var precedences = map[token.TokenType]int{
|
||||
token.BITWISE_OR: BITWISE_OR,
|
||||
token.BITWISE_XOR: BITWISE_XOR,
|
||||
token.BITWISE_AND: BITWISE_AND,
|
||||
token.LEFT_SHIFT: BITWISE_SHIFT,
|
||||
token.RIGHT_SHIFT: BITWISE_SHIFT,
|
||||
token.PLUS: SUM,
|
||||
token.MINUS: SUM,
|
||||
token.DIVIDE: PRODUCT,
|
||||
@@ -112,6 +115,9 @@ func New(l *lexer.Lexer) *Parser {
|
||||
p.registerInfix(token.BITWISE_XOR, p.parseInfixExpression)
|
||||
p.registerInfix(token.BITWISE_AND, p.parseInfixExpression)
|
||||
|
||||
p.registerInfix(token.LEFT_SHIFT, p.parseInfixExpression)
|
||||
p.registerInfix(token.RIGHT_SHIFT, p.parseInfixExpression)
|
||||
|
||||
p.registerPrefix(token.NOT, p.parsePrefixExpression)
|
||||
p.registerInfix(token.OR, p.parseInfixExpression)
|
||||
p.registerInfix(token.AND, p.parseInfixExpression)
|
||||
|
||||
Reference in New Issue
Block a user