X-Git-Url: http://git.harvie.cz/?p=svn%2FCll1h%2F.git;a=blobdiff_plain;f=demos%2Fidmap.c;fp=demos%2Fidmap.c;h=0000000000000000000000000000000000000000;hp=ff963193705c83201e2ed08420ca0885d5180f21;hb=e63f1bc2438012b5f2f6592a474892501149af18;hpb=6a60bc82e8b8e6cccd0d4c2214a1f291662215f0 diff --git a/demos/idmap.c b/demos/idmap.c deleted file mode 100644 index ff96319..0000000 --- a/demos/idmap.c +++ /dev/null @@ -1,94 +0,0 @@ -#include "cll1.h" - -struct Line -{ - int n; - list(Line); -} *line; - -struct Id -{ - char *str; - int count; - struct Line *lines; - list(Id); -} *id,*ids=NULL; - -program -{ - char *ptr; - char *fname; - char *c=NULL; - int l=0; - - arguments - { - thisargument(fname); - nextargument(c); - } - else - { - puts("Usage: idmap file [c]"); - return 1; - } - - parse(fname) - { - l++; - while(*_) - { - goto_alpha(_); - ptr=_; - skip_alnum(_); - *_=0; - _++; - - if(*ptr) - { - if_exists(id,ids,eq(id->str,ptr)) - { - id->count++; - if_exists(line,id->lines,line->n==l); - else - { - create(line,Line); - line->n=l; - push(line,id->lines); - } - } - else - { - create(id,Id); - create(line,Line); - id->str=ptr; - id->count=1; - id->lines=line; - line->n=l; - insert(id,ids,sort_by,str); - } - } - if(*_=='"' || *_=='\'' ) - { - char c=*_; - _++; - gotochr(_,c); - } - } - } - fail - { - perror(argv[1]); - exit(-1); - } - done; - - if(c) - sort(id,ids,desc_order_by,count); - - for_each(id,ids) - { - printf("%3dx %s",id->count,id->str); - for_each(line,id->lines) printf(" [%d]",line->n); - printf("\n"); - } -}