changeset 80:53c3ce58fc8a

modify code gen, for no-warnings (gcc -Wall).
author Ryoma SHINYA <shinya@firefly.cr.ie.u-ryukyu.ac.jp>
date Wed, 10 Nov 2010 19:15:03 +0900
parents 623eccb93ca1
children 3dc381c90870
files pyrect/translator/grep_translator.py pyrect/translator/template/grep.c
diffstat 2 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/pyrect/translator/grep_translator.py	Mon Nov 08 10:56:55 2010 +0900
+++ b/pyrect/translator/grep_translator.py	Wed Nov 10 19:15:03 2010 +0900
@@ -44,15 +44,17 @@
     def emit_initialization(self):
         self.emit("#include <stdio.h>")
         self.emit("#define GREP grep")
-        self.emit("#define UCHAR unsigned char")
-        self.emit("#define UCHARP unsigned char *")
         self.emit("#include <stdlib.h>")
         self.emit("#include <sys/mman.h>")
         self.emit("#include <sys/types.h>")
         self.emit("#include <sys/stat.h>")
         self.emit("#include <fcntl.h>")
+        self.emit("#include <unistd.h>")
         self.emit("#include <string.h>")
 
+        self.emit("typedef unsigned char   UCHAR;")
+        self.emit("typedef unsigned char *UCHARP;")
+
         self.emit('void reject(%s);' % self.interface)
         self.emit("void matcher(%s);" % self.interface, 2)
         self.emit('void accept(%s);' % self.interface)
@@ -116,7 +118,7 @@
         for i in range(l-1):
             skip[key[i]] = l-1-i
 
-        self.emit("UCHARP tmp1, *tmp2; buf += %d;" % (l-1), 2)
+        self.emit("UCHARP tmp1, tmp2; buf += %d;" % (l-1), 2)
 
         self.emiti("while (buf < end) {")
         self.emiti(  "if (*buf == %d /* %s */) {" % (ord(key[-1]), Character.ascii(key[-1])))
@@ -167,7 +169,7 @@
         for i in range(l):
             skip[key[i]] = l-i
 
-        self.emit("UCHARP tmp1, *tmp2, *end_ = end - %d;" % (l-1),  2)
+        self.emit("UCHARP tmp1, tmp2, end_ = end - %d;" % (l-1),  2)
         self.emiti("while (buf < end_) {")
         self.emiti(  "if (*buf == %d /* %s */) {" % (ord(key[0]), Character.ascii(key[0])))
         self.emit(     "tmp1 = buf, tmp2 = (UCHARP)key;")
@@ -191,12 +193,12 @@
         self.emiti("void booster(%s) {" % self.interface)
         self.emiti(  "do {")
         self.emit(     "if (buf > end) return;")
-        self.emiti(    "switch (*(buf+%d)) {" % (min_len-1))
+        self.emiti(    "switch (buf[%d]) {" % (min_len-1))
         for c in chars:
             self.emit(   "case %d: /* %s */" % (ord(c), Character.ascii(c)))
         self.emit(       "goto ret;")
         self.emitd(    "}")
-        self.emitd(  "} while(buf += %d);" % (min_len-1))
+        self.emitd(  "} while(buf += %d);" % min_len)
         self.emit(   "ret: return %s(%s);" % (self.state_name(self.cg.start) , self.args))
         self.emitd("}", 2)
 
--- a/pyrect/translator/template/grep.c	Mon Nov 08 10:56:55 2010 +0900
+++ b/pyrect/translator/template/grep.c	Wed Nov 10 19:15:03 2010 +0900
@@ -11,7 +11,7 @@
 
 void grep(char *regexp, int fd, char *name) {
   caddr_t file_mmap;
-  UCHARP buf, *end, *beg;
+  UCHARP buf, end, beg;
   off_t size;
   struct stat sb;
 
@@ -34,7 +34,6 @@
   matcher(beg, beg, end);
 
   munmap(file_mmap, size);
-  pthread_exit(NULL);
   return;
 }
 
@@ -46,7 +45,7 @@
     exit(0);
   }
   if (argc == 2) {
-    return;
+    return 0;
   } else {
     for (i = 2; i < argc; i++) {
       fd = open(argv[i], O_RDONLY, 0666);