-static const oper_info qcc_operators[] = {
- { "(", 0, opid1('('), ASSOC_LEFT, 99, OP_PREFIX}, /* paren expression - non function call */
-
- { ".", 2, opid1('.'), ASSOC_LEFT, 15, 0 },
- { "(", 0, opid1('('), ASSOC_LEFT, 15, 0 }, /* function call */
- { "[", 2, opid1('['), ASSOC_LEFT, 15, 0 }, /* array subscript */
-
- { "!", 1, opid2('!', 'P'), ASSOC_RIGHT, 14, OP_PREFIX },
- { "+", 1, opid2('+','P'), ASSOC_RIGHT, 14, OP_PREFIX },
- { "-", 1, opid2('-','P'), ASSOC_RIGHT, 14, OP_PREFIX },
-
- { "*", 2, opid1('*'), ASSOC_LEFT, 13, 0 },
- { "/", 2, opid1('/'), ASSOC_LEFT, 13, 0 },
- { "&", 2, opid1('&'), ASSOC_LEFT, 13, 0 },
- { "|", 2, opid1('|'), ASSOC_LEFT, 13, 0 },
-
- { "+", 2, opid1('+'), ASSOC_LEFT, 12, 0 },
- { "-", 2, opid1('-'), ASSOC_LEFT, 12, 0 },
-
- { "<", 2, opid1('<'), ASSOC_LEFT, 10, 0 },
- { ">", 2, opid1('>'), ASSOC_LEFT, 10, 0 },
- { "<=", 2, opid2('<','='), ASSOC_LEFT, 10, 0 },
- { ">=", 2, opid2('>','='), ASSOC_LEFT, 10, 0 },
- { "==", 2, opid2('=','='), ASSOC_LEFT, 10, 0 },
- { "!=", 2, opid2('!','='), ASSOC_LEFT, 10, 0 },
-
- { "=", 2, opid1('='), ASSOC_RIGHT, 8, 0 },
- { "+=", 2, opid2('+','='), ASSOC_RIGHT, 8, 0 },
- { "-=", 2, opid2('-','='), ASSOC_RIGHT, 8, 0 },
- { "*=", 2, opid2('*','='), ASSOC_RIGHT, 8, 0 },
- { "/=", 2, opid2('/','='), ASSOC_RIGHT, 8, 0 },
- { "%=", 2, opid2('%','='), ASSOC_RIGHT, 8, 0 },
- { "&=", 2, opid2('&','='), ASSOC_RIGHT, 8, 0 },
- { "|=", 2, opid2('|','='), ASSOC_RIGHT, 8, 0 },
-
- { "&&", 2, opid2('&','&'), ASSOC_LEFT, 5, 0 },
- { "||", 2, opid2('|','|'), ASSOC_LEFT, 5, 0 },
-
- { ",", 2, opid1(','), ASSOC_LEFT, 1, 0 }
+static const oper_info fte_operators[] = {
+ {"(", 0, opid1('('), ASSOC_LEFT, 99, OP_PREFIX, false}, /* paren expression - non function call */
+
+ {"++", 1, opid3('S', '+', '+'), ASSOC_LEFT, 15, OP_SUFFIX, false},
+ {"--", 1, opid3('S', '-', '-'), ASSOC_LEFT, 15, OP_SUFFIX, false},
+ {".", 2, opid1('.'), ASSOC_LEFT, 15, 0, false},
+ {"(", 0, opid1('('), ASSOC_LEFT, 15, 0, false}, /* function call */
+ {"[", 2, opid1('['), ASSOC_LEFT, 15, 0, false}, /* array subscript */
+
+ {"!", 1, opid2('!', 'P'), ASSOC_RIGHT, 14, OP_PREFIX, true},
+ {"+", 1, opid2('+', 'P'), ASSOC_RIGHT, 14, OP_PREFIX, false},
+ {"-", 1, opid2('-', 'P'), ASSOC_RIGHT, 14, OP_PREFIX, true},
+ {"++", 1, opid3('+', '+', 'P'), ASSOC_RIGHT, 14, OP_PREFIX, false},
+ {"--", 1, opid3('-', '-', 'P'), ASSOC_RIGHT, 14, OP_PREFIX, false},
+
+ {"*", 2, opid1('*'), ASSOC_LEFT, 13, 0, true},
+ {"/", 2, opid1('/'), ASSOC_LEFT, 13, 0, true},
+ {"&", 2, opid1('&'), ASSOC_LEFT, 13, 0, true},
+ {"|", 2, opid1('|'), ASSOC_LEFT, 13, 0, true},
+
+ {"+", 2, opid1('+'), ASSOC_LEFT, 12, 0, true},
+ {"-", 2, opid1('-'), ASSOC_LEFT, 12, 0, true},
+
+ {"<<", 2, opid2('<', '<'), ASSOC_LEFT, 11, 0, true},
+ {">>", 2, opid2('>', '>'), ASSOC_LEFT, 11, 0, true},
+
+ {"<", 2, opid1('<'), ASSOC_LEFT, 10, 0, false},
+ {">", 2, opid1('>'), ASSOC_LEFT, 10, 0, false},
+ {"<=", 2, opid2('<', '='), ASSOC_LEFT, 10, 0, false},
+ {">=", 2, opid2('>', '='), ASSOC_LEFT, 10, 0, false},
+ {"==", 2, opid2('=', '='), ASSOC_LEFT, 10, 0, true},
+ {"!=", 2, opid2('!', '='), ASSOC_LEFT, 10, 0, true},
+
+ {"?", 3, opid2('?', ':'), ASSOC_RIGHT, 9, 0, true},
+
+ {"=", 2, opid1('='), ASSOC_RIGHT, 8, 0, false},
+ {"+=", 2, opid2('+', '='), ASSOC_RIGHT, 8, 0, false},
+ {"-=", 2, opid2('-', '='), ASSOC_RIGHT, 8, 0, false},
+ {"*=", 2, opid2('*', '='), ASSOC_RIGHT, 8, 0, false},
+ {"/=", 2, opid2('/', '='), ASSOC_RIGHT, 8, 0, false},
+ {"%=", 2, opid2('%', '='), ASSOC_RIGHT, 8, 0, false},
+ {"&=", 2, opid2('&', '='), ASSOC_RIGHT, 8, 0, false},
+ {"|=", 2, opid2('|', '='), ASSOC_RIGHT, 8, 0, false},
+ {"&~=", 2, opid3('&', '~', '='), ASSOC_RIGHT, 8, 0, false},
+
+ {"&&", 2, opid2('&', '&'), ASSOC_LEFT, 5, 0, true},
+ {"||", 2, opid2('|', '|'), ASSOC_LEFT, 5, 0, true},
+
+ /* Leave precedence 3 for : with -fcorrect-ternary */
+ {",", 2, opid1(','), ASSOC_LEFT, 2, 0, false},
+ {":", 0, opid2(':', '?'), ASSOC_RIGHT, 1, 0, false}