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