41 lines
1.2 KiB
CoffeeScript
41 lines
1.2 KiB
CoffeeScript
![]() |
# Parser
|
||
|
# ---------
|
||
|
|
||
|
test "operator precedence for logical operators", ->
|
||
|
source = '''
|
||
|
a or b and c
|
||
|
'''
|
||
|
block = CoffeeScript.nodes source
|
||
|
[expression] = block.expressions
|
||
|
eq expression.first.base.value, 'a'
|
||
|
eq expression.operator, '||'
|
||
|
eq expression.second.first.base.value, 'b'
|
||
|
eq expression.second.operator, '&&'
|
||
|
eq expression.second.second.base.value, 'c'
|
||
|
|
||
|
test "operator precedence for bitwise operators", ->
|
||
|
source = '''
|
||
|
a | b ^ c & d
|
||
|
'''
|
||
|
block = CoffeeScript.nodes source
|
||
|
[expression] = block.expressions
|
||
|
eq expression.first.base.value, 'a'
|
||
|
eq expression.operator, '|'
|
||
|
eq expression.second.first.base.value, 'b'
|
||
|
eq expression.second.operator, '^'
|
||
|
eq expression.second.second.first.base.value, 'c'
|
||
|
eq expression.second.second.operator, '&'
|
||
|
eq expression.second.second.second.base.value, 'd'
|
||
|
|
||
|
test "operator precedence for binary ? operator", ->
|
||
|
source = '''
|
||
|
a ? b and c
|
||
|
'''
|
||
|
block = CoffeeScript.nodes source
|
||
|
[expression] = block.expressions
|
||
|
eq expression.first.base.value, 'a'
|
||
|
eq expression.operator, '?'
|
||
|
eq expression.second.first.base.value, 'b'
|
||
|
eq expression.second.operator, '&&'
|
||
|
eq expression.second.second.base.value, 'c'
|