source: app/src/sen-l/sen.l @ 3748bd1

help
Last change on this file since 3748bd1 was 25ae32e, checked in by obrebski <obrebski@…>, 17 years ago

git-svn-id: svn://atos.wmid.amu.edu.pl/utt@4 e293616e-ec6a-49c2-aa92-f4a8b91c5d16

  • Property mode set to 100644
File size: 1.3 KB
Line 
1%{
2     int pos=0,len=0;
3
4     void set_position();
5%}
6
7ul              [A-Z¡ÆÊ£ÑÓŠ¯¬]
8ll              [a-z±æê³ñ󶿌]
9l               ul|ll
10n               [0-9]+
11s               [ \t]+
12
13
14ab1             (mgr|in¿|prof|hab|doc|dyr|kier|zast)
15ab2             (ul|pl|al)
16
17abrv            (ab1|ab2)
18
19SEG             .*\n
20N               {n}{s}{n}{s}N{s}.*\n
21S               {n}{s}{n}{s}S{s}.*\n
22P               {n}{s}{n}{s}P{s}.*\n
23W               {n}{s}{n}{s}W{s}.*\n
24UL              {n}{s}{n}{s}W{s}{ul}.*\n
25Cap             {n}{s}{n}{s}W{s}{ul}{ll}*.*\n
26POINT           {n}{s}{n}{s}P{s}\.({s}.*)?\n
27QMARK           {n}{s}{n}{s}P{s}\?({s}.*)?\n
28EXCL            {n}{s}{n}{s}P{s}\!({s}.*)?\n
29DASH            {n}{s}{n}{s}P{s}\-({s}.*)?\n
30POINTS          {POINT}+
31
32ABRV            {n}{s}{n}{s}W{s}{abrv}({s}.*)?\n
33
34EOS             {POINT}|{POINTS}|{QMARK}|{EXCL}
35
36
37%%
38
39
40{N}({POINT}{N})+                ECHO; set_position();
41({UL}{POINT}{S}?)+{Cap}         ECHO; set_position();
42{ABRV}{POINT}                   ECHO; set_position();
43
44
45{P}/{S}{DASH}                   ECHO; set_position(); print_EOS();
46{EOS}/{S}({Cap}|{P}|{N})        ECHO; set_position(); print_EOS();
47
48.*                              ECHO; set_position();
49
50<<EOF>>                         printf("%04d 00 EOS *\n",pos+len); exit(1);
51
52%%
53
54int main()
55{
56  printf("0000 00 BOS *\n");
57  yylex();
58}
59
60int yywrap()
61{
62  return 1;
63}
64
65void set_position()
66{
67  char *lastseg, *tmp;
68  yytext[yyleng-1]='\0';
69  if(tmp=strrchr(yytext,'\n'))
70    lastseg=tmp+1;
71  else
72    lastseg=yytext;
73  sscanf(lastseg,"%d %d", &pos, &len);
74  yytext[yyleng-1]='\n';
75}
76
77int print_EOS()
78{
79  printf("%04d 00 EOS *\n%04d 00 BOS *\n",pos+len,pos+len);
80}
Note: See TracBrowser for help on using the repository browser.