1 |
adcroft |
1.1 |
/* $Id: VarDic.lex,v 1.2 1997/03/22 20:58:46 cnh Exp $ */ |
2 |
|
|
/* Lex analyser to process variable database into HTML table */ |
3 |
|
|
%p 100000 |
4 |
|
|
%a 100000 |
5 |
|
|
%o 100000 |
6 |
|
|
%n 100000 |
7 |
|
|
%k 100000 |
8 |
|
|
%e 100000 |
9 |
|
|
%option noyywrap |
10 |
|
|
|
11 |
|
|
/* Matches variable names */ |
12 |
|
|
NAME [_a-zA-Z]+[_a-zA-Z0-9\./]* |
13 |
|
|
|
14 |
|
|
%{ |
15 |
|
|
#include <stdio.h> |
16 |
|
|
#include <string.h> |
17 |
|
|
#include "VarDic.tab.h" |
18 |
|
|
#include "GLOBALS.h" |
19 |
|
|
|
20 |
|
|
/* DEBUGGING aids */ |
21 |
|
|
#define DP(a) |
22 |
|
|
#define DP(a) (printf("\"%s\" (%d,%d)\n",a,Lno,Cno)) |
23 |
|
|
#define RETURN(a) return(a) |
24 |
|
|
/* #define RETURN(a) printf("Token %d\n",a);return(a) */ |
25 |
|
|
%} |
26 |
|
|
%% |
27 |
|
|
^#.* {DP("COMMENT");} |
28 |
|
|
HREF {DP("HREF"); Cno=Cno+VarDicleng; RETURN(HREF);} |
29 |
|
|
TEXT {DP("TEXT"); Cno=Cno+VarDicleng; RETURN(TEXT);} |
30 |
|
|
UNITS {DP("UNITS"); Cno=Cno+VarDicleng; RETURN(UNITS);} |
31 |
|
|
NOTES {DP("NOTES"); Cno=Cno+VarDicleng; RETURN(NOTES);} |
32 |
|
|
{NAME} {DP("NAME"); Cno=Cno+VarDicleng; |
33 |
|
|
VarDiclval.stringPtr=strdup(VarDictext); |
34 |
|
|
RETURN(NAME);} |
35 |
|
|
[ ] {DP("SPACE"); Cno=Cno+VarDicleng; } |
36 |
|
|
\{ {DP("{"); Cno=Cno+VarDicleng; RETURN('{');} |
37 |
|
|
\} {DP("}"); Cno=Cno+VarDicleng; RETURN('}');} |
38 |
|
|
; {DP(";"); Cno=Cno+VarDicleng; RETURN(';');} |
39 |
|
|
= {DP("="); Cno=Cno+VarDicleng; RETURN('=');} |
40 |
|
|
|
41 |
|
|
\"([^\"\n\\\\"]|\\.)*\" {DP("STRING"); Cno=Cno+VarDicleng; |
42 |
|
|
VarDiclval.stringPtr=strcopy(VarDictext+1); |
43 |
|
|
VarDiclval.stringPtr[strlen(VarDiclval.stringPtr)-1]='\0'; |
44 |
|
|
RETURN(STRING);} |
45 |
|
|
|
46 |
|
|
\"([^\"\n\\\\"]|\\.)*$ {DP("UNTERMINATED STRING"); |
47 |
|
|
Cno=Cno+VarDicleng; |
48 |
|
|
fprintf(stderr, |
49 |
|
|
"Error: unterminated string. <%s> Line %d Column %d\n", |
50 |
|
|
currentFile,Lno,Cno); |
51 |
|
|
fprintf(stderr,"==> %s\n",VarDictext); |
52 |
|
|
} |
53 |
|
|
|
54 |
|
|
|
55 |
|
|
\n {DP("\\n"); |
56 |
|
|
++Lno;Cno=1; |
57 |
|
|
} |
58 |
|
|
|
59 |
|
|
. {DP("UNMATCHED"); |
60 |
|
|
Cno=Cno+VarDicleng; |
61 |
|
|
} |