shithub: scc

Download patch

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,
--