Опираться на:
https://github.com/QSPFoundation/qsp/blob/ae028d972a18bbca97d5330eefb4237205b0f69b/help/qsp.peg#L329-L344
Мое определение приоритетов операций:
|
let prec = function |
|
| OpB Or -> 1 |
|
| OpB And -> 2 |
|
| PrefB No -> 3 |
|
| PrefB Loc | PrefB Obj -> 4 // `no obj 'apple'` equal `no (obj 'apple')` |
|
// = | < | > | ! | <> | <= | >= | => | =< |
|
| OpB Eq | OpB Lt | OpB Gt | OpB Bang | OpB Ne | OpB Le | OpB Ge | OpB Eg | OpB El-> 5 |
|
| OpB Plus | OpB Minus -> 6 |
|
| OpB Mod -> 7 |
|
| OpB Times | OpB Divide -> 8 |
|
| PrefB Neg -> 9 |
Тесты писать в https://github.com/QSPFoundation/Qsp.FSharp/blob/master/tests/Qsp.FSharp.Core.Tests/Printer/Ast/Expr.Tests.fs
Тесты
obj 'Яблоко' = 1 должно быть ((obj 'Яблоко') = 1), а не (obj ('Яблоко' = 1))
Примеры
Опираться на:
https://github.com/QSPFoundation/qsp/blob/ae028d972a18bbca97d5330eefb4237205b0f69b/help/qsp.peg#L329-L344
Мое определение приоритетов операций:
Qsp.FSharp/src/Qsp.FSharp.Core/Ast.fs
Lines 141 to 151 in cfb25cb
Тесты писать в https://github.com/QSPFoundation/Qsp.FSharp/blob/master/tests/Qsp.FSharp.Core.Tests/Printer/Ast/Expr.Tests.fs
Тесты
obj 'Яблоко' = 1должно быть((obj 'Яблоко') = 1), а не(obj ('Яблоко' = 1))Примеры