Skip to content

test(core/printer/expr): operator precedence #61

@gretmn102

Description

@gretmn102

Опираться на:

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))

Примеры

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions