As an update, I tweaked the PTMD_STD nesting precedence table given yesterday.

Mainly this was just the addition of visual lines to group the precedence levels as to which ones would exist or not depending on what major subset of the language is in use. But the 2 tightest levels were split in 2 at the same time.

PTMD_STD has 23 precedence levels when the C<catalog_abstraction_level>
pragma is C<rtn_inv_alt_syn>; if it is C<plain_rtn_inv> instead, then 18 of
the levels can be eliminated, so then PTMD_STD has just 5; if it is
C<code_as_data> instead, then 4 more can be eliminated, leaving just 1.

    Level            | Assoc | Examples
    -----------------+-------+---------------------------------------------
    Data Terms       | N/A   | Inf True Order:Same Down 42 3.14 -5/7 3*2^8
                     |       | F;'27E04' 'eek' foo "x" #`comment!`#
                     |       | {43,9,5} [1,2,3] {'Carrots'=>42} {11..20}
                     |       | $:{...} %:{...} @:{...} nlx.lib.MyType
    -----------------+-------+---------------------------------------------
    Routine Terms    | N/A   | (1+2) myfunc(...) <Int>
    Accessor Postfix | N/A   | nlx.data.quux .age foo().bar
    -----------------+-------+---------------------------------------------
    Postcircumfix    | N/A   | p.{...} r{...} x.[...] y[...]
    Ordinal Postfix  | N/A   | ++ -- i!
    Generic Prefix   | N/A   | || # #+ % @
    Currying Infix   | left  | assuming
    Exponentiation   | right | ^ exp ** log e** log-e
    Multiplicative   | left  | * / div mod intersect join times divideby
                     |       | compose intersect+
    Rounding 2-Infix | left  | round
    Filtering Infix  | left  | where !where matching !matching
    Additive         | left  | + - |-| ~ ~# union exclude minus
                     |       | union+ union++ minus+
    Ordering Infix   | left  | <=>
    Selecting Infix  | left  | as asserting min max [<=>] //
    Comparison       | left  | isa !isa = != < > <= >= like !like
                     |       | inside !inside holds !holds in !in has !has
                     |       | {<=} {!<=} {>=} {!>=} {<} {!<} {>} {!>}
                     |       | {<=}+ {!<=}+ {>=}+ {!>=}+ {<}+ {!<}+ {>}+ {!>}+
    Logical Negation | N/A   | not ! ¬
    Conjunction      | left  | and ∧
    Disjunction      | left  | or ∨ xor ⊻ ↮
    Implies          | left  | imp → nimp ↛ if ← nif ↚ nand ⊼ ↑ nor ⊽ ↓
    Equivalence      | left  | xnor ↔
    -----------------+-------+---------------------------------------------
    Conditional      | right | ??!! if-else-expr given-when-def-expr
    Binding          | right | ::=
    -----------------+-------+---------------------------------------------
    Assignment       | non   | := :=++ :=-- :=foo

Mainly I am just concerned with the single largest block of 17 levels, in regards to desiring feedback, as I consider that the only group that isn't rigorous and needs various fixes, such as combining levels that don't need to be separate, or splitting or reordering etc. The 4 small groups I consider rigorous and not in any need of changes, though feedback is still welcome.

Thank you. -- Darren Duncan
_______________________________________________
muldis-db-users mailing list
muldis-db-users@mm.darrenduncan.net
http://mm.darrenduncan.net/mailman/listinfo/muldis-db-users

Reply via email to