/[CvsGraph]/cvsgraph/confl.l
ViewVC logotype

Annotate of /cvsgraph/confl.l

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations)
Sat Feb 24 00:35:13 2001 UTC (16 years, 7 months ago) by bertho
Branch: MAIN
CVS Tags: REL_1_0_1
Changes since 1.1: +7 -0 lines
Fixed the soring of revisions permanently. All sections of the revision
numbers are important.
Implemented better control over libgd with autoconf and added support
for generation of png and jpeg from the configuration file (thanks to
Kurt L. Sussman for a patch, although I modified it a bit).
1 /*
2 * CvsGraph graphical representation generator of brances and revisions
3 * of a file in cvs/rcs.
4 *
5 * Copyright (C) 2001 B. Stultiens
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22 %x STR
23
24 %{
25 #include <stdio.h>
26 #include <stdlib.h>
27 #include <string.h>
28 #include <ctype.h>
29
30 #include "utils.h"
31 #include "readconf.h"
32 #include "y.tab.h"
33
34 static void reset_str(void);
35 static void add_str(const char *s, int l);
36 static char *get_str(void);
37
38 int line_number;
39
40 #define YY_NO_UNPUT 1
41
42 %}
43
44 %%
45 branch_bgcolor return tBRANCH_BGCOLOR;
46 branch_bspace return tBRANCH_BSPACE;
47 branch_color return tBRANCH_COLOR;
48 branch_font return tBRANCH_FONT;
49 branch_lspace return tBRANCH_LSPACE;
50 branch_rspace return tBRANCH_RSPACE;
51 branch_tspace return tBRANCH_TSPACE;
52 branch_separator return tBRANCH_SEPARATOR;
53 cmd_rlog return tCMD_RLOG;
54 color_bg return tCOLOR_BG;
55 cvsmodule return tCVSMODULE;
56 cvsroot return tCVSROOT;
57 rev_color return tREV_COLOR;
58 rev_font return tREV_FONT;
59 rev_separator return tREV_SEPARATOR;
60 rev_minline return tREV_MINLINE;
61 rev_maxline return tREV_MAXLINE;
62 rev_lspace return tREV_LSPACE;
63 rev_rspace return tREV_RSPACE;
64 rev_tspace return tREV_TSPACE;
65 rev_bspace return tREV_BSPACE;
66 tag_color return tTAG_COLOR;
67 tag_font return tTAG_FONT;
68 title return tTITLE;
69 title_x return tTITLE_X;
70 title_y return tTITLE_Y;
71 title_font return tTITLE_FONT;
72 title_align return tTITLE_ALIGN;
73 title_color return tTITLE_COLOR;
74 margin_top return tMARGIN_TOP;
75 margin_bottom return tMARGIN_BOTTOM;
76 margin_left return tMARGIN_LEFT;
77 margin_right return tMARGIN_RIGHT;
78 image_type return tIMAGE_TYPE;
79 image_quality return tIMAGE_QUALITY;
80
81 jpeg yylval.num = IMAGE_JPEG; return tNUMBER;
82 png yylval.num = IMAGE_PNG; return tNUMBER;
83 gif yylval.num = IMAGE_GIF; return tNUMBER;
84
85 true yylval.num = 1; return tNUMBER;
86 false yylval.num = 0; return tNUMBER;
87
88 [a-zA-Z_][a-zA-Z0-9_]* yyerror("Unknown keyword '%s'", yytext);
89
90 [+-]?0[0-7]* yylval.num = strtol(yytext, NULL, 8); return tNUMBER;
91 [+-]?[1-9][0-9]* yylval.num = strtol(yytext, NULL, 10); return tNUMBER;
92 [+-]?0[xX][0-9a-fA-F]+ yylval.num = strtol(yytext, NULL, 16); return tNUMBER;
93 [+-]?0[xX] yyerror("Invalid hex number");
94
95 = return *yytext;
96 ; return *yytext;
97
98 \" reset_str(); BEGIN(STR);
99 <STR>[^\\\"\n]* add_str(yytext, yyleng);
100 <STR>\\[abfnrtv] {
101 char ch;
102 switch(yytext[1])
103 {
104 case 'a': ch = '\a'; break;
105 case 'b': ch = '\b'; break;
106 case 'f': ch = '\f'; break;
107 case 'n': ch = '\n'; break;
108 case 'r': ch = '\r'; break;
109 case 't': ch = '\t'; break;
110 case 'v': ch = '\v'; break;
111 }
112 add_str(&ch, 1);
113 }
114 <STR>\\[012][0-7]{0,2} { char ch = strtol(yytext+1, NULL, 8); add_str(&ch, 1); }
115 <STR>\\[xX][a-fA-F0-9]{2} { char ch = strtol(yytext+1, NULL, 8); add_str(&ch, 1); }
116 <STR>\\[xX][a-fA-F0-9] yyerror("Invalid hex escape");
117 <STR>\\. add_str(yytext, yyleng);
118 <STR>\n yyerror("Newline in string");
119 <STR>\" yylval.str = get_str(); BEGIN(INITIAL); return tSTRING;
120
121 [ \t\f\v]+ ; /* Ignore whitespace */
122 #[^\n]* ; /* Ignore comments */
123
124 \n line_number++;
125 . yyerror("Unknown char/unmatched text '%c' (0x%02x)", isprint(*yytext) ? *yytext : ' ', *yytext);
126
127 %%
128
129 int yywrap(void)
130 {
131 return 1;
132 }
133
134 #define STRALLOCSIZE 128
135 static char *str;
136 static int nstr;
137 static int nastr;
138
139 static void reset_str(void)
140 {
141 nstr = 0;
142 }
143
144 static void add_str(const char *s, int l)
145 {
146 if(nstr + l + 1 > nastr)
147 {
148 str = xrealloc(str, nastr+STRALLOCSIZE);
149 nastr += STRALLOCSIZE;
150 }
151 memcpy(str+nstr, s, l);
152 nstr += l;
153 }
154
155 static char *get_str(void)
156 {
157 str[nstr] = '\0';
158 return xstrdup(str);
159 }
160

  ViewVC Help
Powered by ViewVC 1.1.0 with CvsGraph 1.7.0