summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-11-20 22:15:04 +0000
committerLennart Poettering <lennart@poettering.net>2005-11-20 22:15:04 +0000
commit0ff40b23e97276fe829677f9fa0118b0bdb4d6ab (patch)
tree9ca9be2d9b727c6fcf80a7feb1f1bb7926265693
parentd011c663380dbf6e0e6a67d0555d67f3ce544e83 (diff)
initial version
git-svn-id: file:///home/lennart/svn/public/sse/trunk@3 5fbabb74-0606-0410-a5e4-b5cc6a42724e
-rw-r--r--Makefile15
-rw-r--r--lex-c.l87
-rwxr-xr-xsse-feed26
-rw-r--r--sse.sql29
4 files changed, 157 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3830946
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,15 @@
+CLAGS=-Wextra -g -O2 -pipe
+LIBS=-lfl
+
+all: lex-c
+
+lex-c.yy.c: lex-c.l
+ flex -o $@ $^
+
+lex-c: lex-c.yy.o
+ $(CC) -o $@ $^ $(LIBS)
+
+clean:
+ rm -f *.o lex-c.yy.c lex-c
+
+.PHONY: all clean
diff --git a/lex-c.l b/lex-c.l
new file mode 100644
index 0000000..b74f169
--- /dev/null
+++ b/lex-c.l
@@ -0,0 +1,87 @@
+/* --c-mode-- */
+
+%{
+
+#include <stdio.h>
+
+
+%}
+
+%Start DEF CCOMMENT CPPCOMMENT STRING CHAR PREPROC
+
+IDCHAR [_a-zA-Z0-9]
+NIDCHAR [^_a-zA-Z0-9]
+
+%%
+
+ BEGIN DEF;
+
+<DEF>^#ifn?def |
+<DEF>^#if |
+<DEF>^#define |
+<DEF>^#undef ;
+
+<DEF>^#. { BEGIN CPPCOMMENT; }
+
+<DEF>"/*" { BEGIN CCOMMENT; }
+<CCOMMENT>"*/" { BEGIN DEF; }
+<CCOMMENT>\n |
+<CCOMMENT>. ;
+
+<DEF>"//" { BEGIN CPPCOMMENT; }
+<CPPCOMMENT>\n { BEGIN DEF; }
+<CPPCOMMENT>. ;
+
+<DEF>"\"" { BEGIN STRING; }
+<STRING>"\"" { BEGIN DEF; }
+<STRING>. |
+<STRING>\n ;
+
+<DEF>"'" { BEGIN CHAR; }
+<CHAR>"'" { BEGIN DEF; }
+<CHAR>\n |
+<CHAR>. ;
+
+<DEF>auto{NIDCHAR} |
+<DEF>break{NIDCHAR} |
+<DEF>case{NIDCHAR} |
+<DEF>char{NIDCHAR} |
+<DEF>const{NIDCHAR} |
+<DEF>continue{NIDCHAR} |
+<DEF>default{NIDCHAR} |
+<DEF>do{NIDCHAR} |
+<DEF>double{NIDCHAR} |
+<DEF>else{NIDCHAR} |
+<DEF>enum{NIDCHAR} |
+<DEF>extern{NIDCHAR} |
+<DEF>float{NIDCHAR} |
+<DEF>for{NIDCHAR} |
+<DEF>goto{NIDCHAR} |
+<DEF>if{NIDCHAR} |
+<DEF>int{NIDCHAR} |
+<DEF>long{NIDCHAR} |
+<DEF>register{NIDCHAR} |
+<DEF>return{NIDCHAR} |
+<DEF>short{NIDCHAR} |
+<DEF>signed{NIDCHAR} |
+<DEF>sizeof{NIDCHAR} |
+<DEF>static{NIDCHAR} |
+<DEF>struct{NIDCHAR} |
+<DEF>switch{NIDCHAR} |
+<DEF>typedef{NIDCHAR} |
+<DEF>union{NIDCHAR} |
+<DEF>unsigned{NIDCHAR} |
+<DEF>void{NIDCHAR} |
+<DEF>volatile{NIDCHAR} |
+<DEF>while{NIDCHAR} { yyless(yyleng-1); }
+
+<DEF>[a-zA-Z_][a-zA-Z_0-9]{3,} { printf("%s\n", yytext); }
+
+<DEF>"\n" |
+<DEF>. ;
+
+%%
+
+int main(int argc, char *argv[]) {
+ yylex();
+}
diff --git a/sse-feed b/sse-feed
new file mode 100755
index 0000000..d16dfef
--- /dev/null
+++ b/sse-feed
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+
+import sys, os
+
+def handle_file(path, dirpath, filename):
+ global ms
+
+ extension = filename.split(".")[-1]
+
+ if extension in ("c", "h"):
+ print "C source %s %s %s" % (path, dirpath, filename)
+
+def handle_tree(path):
+
+ path = os.path.realpath(path)
+
+ for dirpath, dirs, files in os.walk(path):
+ for f in files:
+ assert path, dirpath[:len(path)]
+
+ dirpath = dirpath[len(path):]
+
+ handle_file(path, dirpath, f)
+
+for a in sys.argv[1:]:
+ handle_tree(a)
diff --git a/sse.sql b/sse.sql
new file mode 100644
index 0000000..0b4b8e6
--- /dev/null
+++ b/sse.sql
@@ -0,0 +1,29 @@
+DROP TABLE word;
+DROP TABLE file;
+DROP TABLE package;
+
+CREATE TABLE word (
+ text VARCHAR(40) NOT NULL,
+ type ENUM ('word', 'subword') DEFAULT 'word' NOT NULL,
+ file_id INTEGER UNSIGNED NOT NULL,
+ cnt INTEGER UNSIGNED NOT NULL,
+ PRIMARY KEY (text, type, file_id)
+);
+
+CREATE TABLE file (
+ id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ package_id INTEGER UNSIGNED NOT NULL,
+ path VARBINARY(255) NOT NULL,
+ language_id TINYINT UNSIGNED NOT NULL,
+ PRIMARY KEY (id)
+);
+
+CREATE TABLE package (
+ id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ filename VARBINARY(255) NOT NULL,
+ url VARBINARY(255) NOT NULL,
+ timestamp TIMESTAMP NOT NULL,
+ md CHAR(32) NOT NULL,
+ PRIMARY KEY(id),
+ KEY (md)
+);