ref: 7de77b9d418a975b358d701e26452c80819d6042
parent: 222655d71caa72a961f0a1573b42f48a891c5808
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Sun Aug 10 19:11:25 EDT 2014
Add modulo operator in cc2
--- a/cc1/code.c
+++ b/cc1/code.c
@@ -19,7 +19,7 @@
[ODEC] = ";-",
[OSIZE] = "#",
[OPTR] = "@",
- [OMOD] = "*",
+ [OMOD] = "%",
[ODIV] = "/",
[OSHL] = "l",
[OSHR] = "r",
--- a/cc2/cc2.h
+++ b/cc2/cc2.h
@@ -69,6 +69,7 @@
#define OSUB '-'
#define OASSIG ':'
#define OINC ';'
+#define OMOD '%'
extern void error(unsigned nerror, ...);
extern void genaddable(Node *list[]);
--- a/cc2/cgen.c
+++ b/cc2/cgen.c
@@ -125,7 +125,7 @@
switch (np->op) {
case OINC:
- case OADD: case OASSIG:
+ case OADD: case OASSIG: case OMOD:
break;
default:
abort();
@@ -191,7 +191,7 @@
np->addable = 20;
break;
case OINC:
- case OASSIG: case OADD: case OSUB:
+ case OASSIG: case OADD: case OSUB: case OMOD:
xaddable(lp);
xaddable(rp);
break;
--- a/cc2/parser.c
+++ b/cc2/parser.c
@@ -248,6 +248,7 @@
static void (*optbl[])(char *) = {
['+'] = operator,
+ ['%'] = operator,
['-'] = operator,
['*'] = operator,
['/'] = operator,
--
⑨