From 0ff40b23e97276fe829677f9fa0118b0bdb4d6ab Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 20 Nov 2005 22:15:04 +0000 Subject: initial version git-svn-id: file:///home/lennart/svn/public/sse/trunk@3 5fbabb74-0606-0410-a5e4-b5cc6a42724e --- Makefile | 15 +++++++++++ lex-c.l | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sse-feed | 26 +++++++++++++++++++ sse.sql | 29 ++++++++++++++++++++++ 4 files changed, 157 insertions(+) create mode 100644 Makefile create mode 100644 lex-c.l create mode 100755 sse-feed create mode 100644 sse.sql 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 + + +%} + +%Start DEF CCOMMENT CPPCOMMENT STRING CHAR PREPROC + +IDCHAR [_a-zA-Z0-9] +NIDCHAR [^_a-zA-Z0-9] + +%% + + BEGIN DEF; + +^#ifn?def | +^#if | +^#define | +^#undef ; + +^#. { BEGIN CPPCOMMENT; } + +"/*" { BEGIN CCOMMENT; } +"*/" { BEGIN DEF; } +\n | +. ; + +"//" { BEGIN CPPCOMMENT; } +\n { BEGIN DEF; } +. ; + +"\"" { BEGIN STRING; } +"\"" { BEGIN DEF; } +. | +\n ; + +"'" { BEGIN CHAR; } +"'" { BEGIN DEF; } +\n | +. ; + +auto{NIDCHAR} | +break{NIDCHAR} | +case{NIDCHAR} | +char{NIDCHAR} | +const{NIDCHAR} | +continue{NIDCHAR} | +default{NIDCHAR} | +do{NIDCHAR} | +double{NIDCHAR} | +else{NIDCHAR} | +enum{NIDCHAR} | +extern{NIDCHAR} | +float{NIDCHAR} | +for{NIDCHAR} | +goto{NIDCHAR} | +if{NIDCHAR} | +int{NIDCHAR} | +long{NIDCHAR} | +register{NIDCHAR} | +return{NIDCHAR} | +short{NIDCHAR} | +signed{NIDCHAR} | +sizeof{NIDCHAR} | +static{NIDCHAR} | +struct{NIDCHAR} | +switch{NIDCHAR} | +typedef{NIDCHAR} | +union{NIDCHAR} | +unsigned{NIDCHAR} | +void{NIDCHAR} | +volatile{NIDCHAR} | +while{NIDCHAR} { yyless(yyleng-1); } + +[a-zA-Z_][a-zA-Z_0-9]{3,} { printf("%s\n", yytext); } + +"\n" | +. ; + +%% + +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) +); -- cgit