parser.h revision 6310a8261c922533a692fb3e74ece2da98d4bafa
1ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross/* 2ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * Copyright (C) 2010 The Android Open Source Project 3ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * 4ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * Licensed under the Apache License, Version 2.0 (the "License"); 5ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * you may not use this file except in compliance with the License. 6ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * You may obtain a copy of the License at 7ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * 8ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * http://www.apache.org/licenses/LICENSE-2.0 9ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * 10ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * Unless required by applicable law or agreed to in writing, software 11ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * distributed under the License is distributed on an "AS IS" BASIS, 12ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * See the License for the specific language governing permissions and 14ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross * limitations under the License. 15ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross */ 16ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross 17ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross#ifndef PARSER_H_ 18ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross#define PARSER_H_ 19ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross 206310a8261c922533a692fb3e74ece2da98d4bafaColin Cross#define T_EOF 0 216310a8261c922533a692fb3e74ece2da98d4bafaColin Cross#define T_TEXT 1 226310a8261c922533a692fb3e74ece2da98d4bafaColin Cross#define T_NEWLINE 2 23ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross 246310a8261c922533a692fb3e74ece2da98d4bafaColin Crossstruct parse_state 256310a8261c922533a692fb3e74ece2da98d4bafaColin Cross{ 266310a8261c922533a692fb3e74ece2da98d4bafaColin Cross char *ptr; 276310a8261c922533a692fb3e74ece2da98d4bafaColin Cross char *text; 286310a8261c922533a692fb3e74ece2da98d4bafaColin Cross int line; 296310a8261c922533a692fb3e74ece2da98d4bafaColin Cross int nexttoken; 306310a8261c922533a692fb3e74ece2da98d4bafaColin Cross void *context; 316310a8261c922533a692fb3e74ece2da98d4bafaColin Cross void (*parse_line)(struct parse_state *state, int nargs, char **args); 326310a8261c922533a692fb3e74ece2da98d4bafaColin Cross const char *filename; 336310a8261c922533a692fb3e74ece2da98d4bafaColin Cross}; 346310a8261c922533a692fb3e74ece2da98d4bafaColin Cross 356310a8261c922533a692fb3e74ece2da98d4bafaColin Crossint lookup_keyword(const char *s); 366310a8261c922533a692fb3e74ece2da98d4bafaColin Crossvoid DUMP(void); 376310a8261c922533a692fb3e74ece2da98d4bafaColin Crossint next_token(struct parse_state *state); 386310a8261c922533a692fb3e74ece2da98d4bafaColin Crossvoid parse_error(struct parse_state *state, const char *fmt, ...); 39ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross 40ca7648ddfb46347c60014a849b0150a74df4e1d2Colin Cross#endif /* PARSER_H_ */ 41