1 /* $ANTLR 2.7.7 (20100319): "ifconfig_bsd.g" -> "IfconfigBSDCfgParser.cpp"$ */
2 #line 43 "ifconfig_bsd.g"
3 
4     // gets inserted before the antlr generated includes in the cpp
5     // file
6 
7 #line 8 "IfconfigBSDCfgParser.cpp"
8 #include "IfconfigBSDCfgParser.hpp"
9 #include <antlr/NoViableAltException.hpp>
10 #include <antlr/SemanticException.hpp>
11 #include <antlr/ASTFactory.hpp>
12 #line 49 "ifconfig_bsd.g"
13 
14     // gets inserted after the antlr generated includes in the cpp
15     // file
16 #include <antlr/Token.hpp>
17 #include <antlr/TokenBuffer.hpp>
18 
19 #line 20 "IfconfigBSDCfgParser.cpp"
20 #line 1 "ifconfig_bsd.g"
21 #line 22 "IfconfigBSDCfgParser.cpp"
IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE (antlr)TokenBuffer & tokenBuf,int k)22 IfconfigBSDCfgParser::IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf, int k)
23 : ANTLR_USE_NAMESPACE(antlr)LLkParser(tokenBuf,k)
24 {
25 }
26 
IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE (antlr)TokenBuffer & tokenBuf)27 IfconfigBSDCfgParser::IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf)
28 : ANTLR_USE_NAMESPACE(antlr)LLkParser(tokenBuf,2)
29 {
30 }
31 
IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE (antlr)TokenStream & lexer,int k)32 IfconfigBSDCfgParser::IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer, int k)
33 : ANTLR_USE_NAMESPACE(antlr)LLkParser(lexer,k)
34 {
35 }
36 
IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE (antlr)TokenStream & lexer)37 IfconfigBSDCfgParser::IfconfigBSDCfgParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer)
38 : ANTLR_USE_NAMESPACE(antlr)LLkParser(lexer,2)
39 {
40 }
41 
IfconfigBSDCfgParser(const ANTLR_USE_NAMESPACE (antlr)ParserSharedInputState & state)42 IfconfigBSDCfgParser::IfconfigBSDCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputState& state)
43 : ANTLR_USE_NAMESPACE(antlr)LLkParser(state,2)
44 {
45 }
46 
cfgfile()47 void IfconfigBSDCfgParser::cfgfile() {
48 	Tracer traceInOut(this, "cfgfile");
49 
50 	try {      // for error handling
51 		{ // ( ... )*
52 		for (;;) {
53 			switch ( LA(1)) {
54 			case LINE_COMMENT:
55 			{
56 				comment();
57 				break;
58 			}
59 			case LLADDR:
60 			{
61 				hwaddr_line();
62 				break;
63 			}
64 			case INET:
65 			{
66 				inet_address();
67 				break;
68 			}
69 			case INET6:
70 			{
71 				inet6_address();
72 				break;
73 			}
74 			case GROUPS:
75 			{
76 				groups();
77 				break;
78 			}
79 			case NEWLINE:
80 			{
81 				match(NEWLINE);
82 				break;
83 			}
84 			case DOUBLE_NEWLINE:
85 			{
86 				match(DOUBLE_NEWLINE);
87 				break;
88 			}
89 			default:
90 				if ((LA(1) == WORD) && (LA(2) == COLON)) {
91 					interface_line();
92 				}
93 				else if (((LA(1) >= PRIORITY && LA(1) <= WORD)) && (_tokenSet_0.member(LA(2)))) {
94 					unknown_line();
95 				}
96 			else {
97 				goto _loop3;
98 			}
99 			}
100 		}
101 		_loop3:;
102 		} // ( ... )*
103 	}
104 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
105 		reportError(ex);
106 		recover(ex,_tokenSet_1);
107 	}
108 }
109 
comment()110 void IfconfigBSDCfgParser::comment() {
111 	Tracer traceInOut(this, "comment");
112 
113 	try {      // for error handling
114 		match(LINE_COMMENT);
115 	}
116 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
117 		reportError(ex);
118 		recover(ex,_tokenSet_0);
119 	}
120 }
121 
interface_line()122 void IfconfigBSDCfgParser::interface_line() {
123 	Tracer traceInOut(this, "interface_line");
124 	ANTLR_USE_NAMESPACE(antlr)RefToken  in = ANTLR_USE_NAMESPACE(antlr)nullToken;
125 #line 165 "ifconfig_bsd.g"
126 	InterfaceSpec is;
127 #line 128 "IfconfigBSDCfgParser.cpp"
128 
129 	try {      // for error handling
130 		in = LT(1);
131 		match(WORD);
132 		match(COLON);
133 		match(FLAGS);
134 		match(EQUAL);
135 		match(INT_CONST);
136 #line 168 "ifconfig_bsd.g"
137 
138 		// interface name and status
139 		is.name = in->getText();
140 		importer->newInterface(is);
141 		consumeUntil(NEWLINE);
142 
143 #line 144 "IfconfigBSDCfgParser.cpp"
144 	}
145 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
146 		reportError(ex);
147 		recover(ex,_tokenSet_0);
148 	}
149 }
150 
hwaddr_line()151 void IfconfigBSDCfgParser::hwaddr_line() {
152 	Tracer traceInOut(this, "hwaddr_line");
153 	ANTLR_USE_NAMESPACE(antlr)RefToken  addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
154 
155 	try {      // for error handling
156 		match(LLADDR);
157 		addr = LT(1);
158 		match(MAC_ADDRESS);
159 #line 181 "ifconfig_bsd.g"
160 
161 		importer->HwAddressForCurrentInterface(addr->getText());
162 
163 #line 164 "IfconfigBSDCfgParser.cpp"
164 	}
165 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
166 		reportError(ex);
167 		recover(ex,_tokenSet_0);
168 	}
169 }
170 
inet_address()171 void IfconfigBSDCfgParser::inet_address() {
172 	Tracer traceInOut(this, "inet_address");
173 	ANTLR_USE_NAMESPACE(antlr)RefToken  addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
174 	ANTLR_USE_NAMESPACE(antlr)RefToken  netm = ANTLR_USE_NAMESPACE(antlr)nullToken;
175 	ANTLR_USE_NAMESPACE(antlr)RefToken  bcast = ANTLR_USE_NAMESPACE(antlr)nullToken;
176 #line 190 "ifconfig_bsd.g"
177 	AddressSpec as;
178 #line 179 "IfconfigBSDCfgParser.cpp"
179 
180 	try {      // for error handling
181 		match(INET);
182 		addr = LT(1);
183 		match(IPV4);
184 		match(NETMASK);
185 		netm = LT(1);
186 		match(HEX_CONST);
187 		match(BROADCAST);
188 		bcast = LT(1);
189 		match(IPV4);
190 #line 193 "ifconfig_bsd.g"
191 
192 		as.at = AddressSpec::INTERFACE_CONFIGURATION;
193 		as.address = addr->getText();
194 		as.netmask = netm->getText();
195 		as.broadcast = bcast->getText();
196 		importer->inetConfigurationForCurrentInterface(as);
197 
198 #line 199 "IfconfigBSDCfgParser.cpp"
199 	}
200 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
201 		reportError(ex);
202 		recover(ex,_tokenSet_0);
203 	}
204 }
205 
inet6_address()206 void IfconfigBSDCfgParser::inet6_address() {
207 	Tracer traceInOut(this, "inet6_address");
208 	ANTLR_USE_NAMESPACE(antlr)RefToken  addr = ANTLR_USE_NAMESPACE(antlr)nullToken;
209 	ANTLR_USE_NAMESPACE(antlr)RefToken  netm = ANTLR_USE_NAMESPACE(antlr)nullToken;
210 #line 205 "ifconfig_bsd.g"
211 	AddressSpec as;
212 #line 213 "IfconfigBSDCfgParser.cpp"
213 
214 	try {      // for error handling
215 		match(INET6);
216 		addr = LT(1);
217 		match(IPV6);
218 		match(PERCENT);
219 		match(WORD);
220 		match(PREFIXLEN);
221 		netm = LT(1);
222 		match(INT_CONST);
223 		match(SCOPEID);
224 		match(HEX_CONST);
225 #line 208 "ifconfig_bsd.g"
226 
227 		as.at = AddressSpec::INTERFACE_CONFIGURATION;
228 		as.address = addr->getText();
229 		as.netmask = netm->getText();
230 		importer->inet6ConfigurationForCurrentInterface(as);
231 
232 #line 233 "IfconfigBSDCfgParser.cpp"
233 	}
234 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
235 		reportError(ex);
236 		recover(ex,_tokenSet_0);
237 	}
238 }
239 
groups()240 void IfconfigBSDCfgParser::groups() {
241 	Tracer traceInOut(this, "groups");
242 
243 	try {      // for error handling
244 		match(GROUPS);
245 		match(COLON);
246 		groups_list();
247 		match(NEWLINE);
248 	}
249 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
250 		reportError(ex);
251 		recover(ex,_tokenSet_0);
252 	}
253 }
254 
unknown_line()255 void IfconfigBSDCfgParser::unknown_line() {
256 	Tracer traceInOut(this, "unknown_line");
257 
258 	try {      // for error handling
259 		{
260 		switch ( LA(1)) {
261 		case PRIORITY:
262 		{
263 			match(PRIORITY);
264 			break;
265 		}
266 		case MEDIA:
267 		{
268 			match(MEDIA);
269 			break;
270 		}
271 		case STATUS:
272 		{
273 			match(STATUS);
274 			break;
275 		}
276 		case WORD:
277 		{
278 			match(WORD);
279 			break;
280 		}
281 		default:
282 		{
283 			throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
284 		}
285 		}
286 		}
287 #line 152 "ifconfig_bsd.g"
288 
289 		consumeUntil(NEWLINE);
290 
291 #line 292 "IfconfigBSDCfgParser.cpp"
292 	}
293 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
294 		reportError(ex);
295 		recover(ex,_tokenSet_0);
296 	}
297 }
298 
groups_list()299 void IfconfigBSDCfgParser::groups_list() {
300 	Tracer traceInOut(this, "groups_list");
301 
302 	try {      // for error handling
303 		match(WORD);
304 #line 224 "ifconfig_bsd.g"
305 		importer->addGroupToCurrentInterface(LT(0)->getText());
306 #line 307 "IfconfigBSDCfgParser.cpp"
307 		{ // ( ... )*
308 		for (;;) {
309 			if ((LA(1) == WORD)) {
310 				match(WORD);
311 #line 226 "ifconfig_bsd.g"
312 				importer->addGroupToCurrentInterface(LT(0)->getText());
313 #line 314 "IfconfigBSDCfgParser.cpp"
314 			}
315 			else {
316 				goto _loop14;
317 			}
318 
319 		}
320 		_loop14:;
321 		} // ( ... )*
322 	}
323 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
324 		reportError(ex);
325 		recover(ex,_tokenSet_2);
326 	}
327 }
328 
initializeASTFactory(ANTLR_USE_NAMESPACE (antlr)ASTFactory &)329 void IfconfigBSDCfgParser::initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& )
330 {
331 }
332 const char* IfconfigBSDCfgParser::tokenNames[] = {
333 	"<0>",
334 	"EOF",
335 	"<2>",
336 	"NULL_TREE_LOOKAHEAD",
337 	"NEWLINE",
338 	"DOUBLE_NEWLINE",
339 	"LINE_COMMENT",
340 	"\"priority\"",
341 	"\"media\"",
342 	"\"status\"",
343 	"WORD",
344 	"COLON",
345 	"\"flags\"",
346 	"EQUAL",
347 	"INT_CONST",
348 	"LLADDR",
349 	"MAC_ADDRESS",
350 	"\"inet\"",
351 	"IPV4",
352 	"\"netmask\"",
353 	"HEX_CONST",
354 	"\"broadcast\"",
355 	"\"inet6\"",
356 	"IPV6",
357 	"PERCENT",
358 	"\"prefixlen\"",
359 	"\"scopeid\"",
360 	"\"groups\"",
361 	"\"Link\"",
362 	"\"Global\"",
363 	"\"Host\"",
364 	"\"addr\"",
365 	"\"Bcast\"",
366 	"\"P-t-P\"",
367 	"\"Mask\"",
368 	"\"Scope\"",
369 	"\"mtu\"",
370 	"\"encap\"",
371 	"\"Loopback\"",
372 	"\"UP\"",
373 	"\"BROADCAST\"",
374 	"\"POINTOPOINT\"",
375 	"\"LOOPBACK\"",
376 	"\"NOARP\"",
377 	"\"RUNNING\"",
378 	"\"RX\"",
379 	"\"TX\"",
380 	"\"collisions\"",
381 	"\"Interrupt\"",
382 	"\"HWaddr\"",
383 	"\"lladdr\"",
384 	"Whitespace",
385 	"NUMBER",
386 	"NEG_INT_CONST",
387 	"HEX_DIGIT",
388 	"DIGIT",
389 	"NUM_3DIGIT",
390 	"NUM_HEX_4DIGIT",
391 	"NUMBER_ADDRESS_OR_WORD",
392 	"AMPERSAND",
393 	"STAR",
394 	"MINUS",
395 	"DOT",
396 	"SLASH",
397 	"QUESTION",
398 	"OPENING_PAREN",
399 	"CLOSING_PAREN",
400 	"OPENING_SQUARE",
401 	"CLOSING_SQUARE",
402 	"OPENING_BRACE",
403 	"CLOSING_BRACE",
404 	"LESS_THAN",
405 	"GREATER_THAN",
406 	0
407 };
408 
409 const unsigned long IfconfigBSDCfgParser::_tokenSet_0_data_[] = { 138577906UL, 0UL, 0UL, 0UL };
410 // EOF NEWLINE DOUBLE_NEWLINE LINE_COMMENT "priority" "media" "status"
411 // WORD LLADDR "inet" "inet6" "groups"
412 const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgParser::_tokenSet_0(_tokenSet_0_data_,4);
413 const unsigned long IfconfigBSDCfgParser::_tokenSet_1_data_[] = { 2UL, 0UL, 0UL, 0UL };
414 // EOF
415 const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgParser::_tokenSet_1(_tokenSet_1_data_,4);
416 const unsigned long IfconfigBSDCfgParser::_tokenSet_2_data_[] = { 16UL, 0UL, 0UL, 0UL };
417 // NEWLINE
418 const ANTLR_USE_NAMESPACE(antlr)BitSet IfconfigBSDCfgParser::_tokenSet_2(_tokenSet_2_data_,4);
419 
420 
421