## terms proto 'term:' is precedence('=') is parsed(&term) { ... } proto circumfix:<( )> is equiv('term:') is pirop('set') { ... } ## autoincrement proto postfix:<++> is looser('term:') is lvalue(1) { ... } proto postfix:<--> is equiv(postfix:<++>) is lvalue(1) { ... } proto prefix:<++> is equiv(postfix:<++>) is lvalue(1) { ... } proto prefix:<--> is equiv(postfix:<++>) is lvalue(1) { ... } ## negation proto prefix:<-> is looser(postfix:<++>) is pirop('neg') { ... } ## exponentiation proto infix:<^> is looser(prefix:<->) { ... } ## multiplicative proto infix:<*> is looser(infix:<^>) is pirop('mul') { ... } proto infix:</> is equiv(infix:<*>) is pirop('div') { ... } proto infix:<%> is equiv(infix:<*>) is pirop('mod') { ... } ## additive proto infix:<+> is looser(infix:<*>) is pirop('add') { ... } proto infix:<-> is equiv(infix:<+>) is pirop('sub') { ... } ## assignment proto infix:<=> is looser(infix:<+>) is assoc('right') is pasttype('bind') is lvalue(1) { ... } ## relational proto infix:<==> is looser(infix:<=>) is assoc('non') { ... } proto infix:<!=> is equiv(infix:<==>) { ... } proto infix:«<» is equiv(infix:<==>) { ... } proto infix:«<=» is equiv(infix:<==>) { ... } proto infix:«>» is equiv(infix:<==>) { ... } proto infix:«>=» is equiv(infix:<==>) { ... } ## boolean proto prefix:<!> is looser(infix:<==>) is pirop('not') { ... } proto infix:<&&> is looser(prefix:<!>) is assoc('left') { ... } proto infix:<||> is looser(infix:<&&>) is assoc('left') { ... } ## vim: expandtab sw=4