ref: b20db931867df763206ca9856fc0ec2a34af54cb
parent: 4f051c93ff2993d15cce71a5097fcb172a1c3df8
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Mon Aug 11 18:44:56 EDT 2014
Add relational operators
--- a/cc2/cc2.h
+++ b/cc2/cc2.h
@@ -78,6 +78,12 @@
#define OBXOR '^'
#define OPTR '@'
#define OADDR 'a'
+#define OLT '<'
+#define OGT '>'
+#define OGE ']'
+#define OLE '['
+#define OEQ '='
+#define ONE '!'
extern void error(unsigned nerror, ...);
extern void genaddable(Node *list[]);
--- a/cc2/cgen.c
+++ b/cc2/cgen.c
@@ -126,6 +126,7 @@
switch (np->op) {
case OPTR: case OADDR:
case OINC:
+ case OLT: case OGT: case OGE: case OLE: case OEQ: case ONE:
case OADD: case OSUB: case OASSIG: case OMOD: case ODIV:
case OSHL: case OSHR:
case OBAND: case OBOR: case OBXOR:
@@ -196,6 +197,7 @@
case OPTR: case OADDR:
xaddable(lp);
break;
+ case OLT: case OGT: case OGE: case OLE: case OEQ: case ONE:
case OINC:
case OASSIG: case OADD: case OSUB: case OMOD: case ODIV:
case OSHL: case OSHR:
--- a/cc2/parser.c
+++ b/cc2/parser.c
@@ -294,6 +294,12 @@
['#'] = immediate,
['@'] = unary,
['a'] = unary,
+ ['<'] = operator,
+ ['>'] = operator,
+ [']'] = operator,
+ ['['] = operator,
+ ['='] = operator,
+ ['!'] = operator,
['\177'] = NULL
};
--
⑨