#ifndef LANGSCAN_PHP_H #define LANGSCAN_PHP_H #define LANGSCAN_PHP_TOKEN_LIST \ LANGSCAN_PHP_TOKEN(integer) \ LANGSCAN_PHP_TOKEN(floating) \ LANGSCAN_PHP_TOKEN(string) \ LANGSCAN_PHP_TOKEN(ident) \ LANGSCAN_PHP_TOKEN(keyword) \ LANGSCAN_PHP_TOKEN(fundef) \ LANGSCAN_PHP_TOKEN(funcall) \ LANGSCAN_PHP_TOKEN(classdef) \ LANGSCAN_PHP_TOKEN(punct) \ LANGSCAN_PHP_TOKEN(comment) \ LANGSCAN_PHP_TOKEN(space) typedef enum { langscan_php_eof = 0, #define LANGSCAN_PHP_TOKEN(name) langscan_php_##name, LANGSCAN_PHP_TOKEN_LIST #undef LANGSCAN_PHP_TOKEN } langscan_php_token_t; typedef struct { int beg_lineno; int beg_columnno; int beg_byteno; int end_lineno; int end_columnno; int end_byteno; int eof; char *text; int leng; size_t (*user_read)(void **user_data_p, char *buf, size_t maxlen); void *user_data; } langscan_php_lex_extra_t; typedef struct langscan_php_tokenizer_tag { langscan_php_lex_extra_t *extra; void *scanner; } langscan_php_tokenizer_t; typedef size_t (*user_read_t)(void **user_data_p, char *buf, size_t maxlen); langscan_php_tokenizer_t *langscan_php_make_tokenizer(user_read_t user_read, void *user_data); langscan_php_token_t langscan_php_get_token(langscan_php_tokenizer_t *tokenizer); void langscan_php_free_tokenizer(langscan_php_tokenizer_t *tokenizer); user_read_t langscan_php_tokenizer_get_user_read(langscan_php_tokenizer_t *tokenizer); void *langscan_php_tokenizer_get_user_data(langscan_php_tokenizer_t *tokenizer); const char *langscan_php_token_name(langscan_php_token_t token); #define langscan_php_curtoken_beg_lineno(tokenizer) ((tokenizer)->extra->beg_lineno) #define langscan_php_curtoken_beg_columnno(tokenizer) ((tokenizer)->extra->beg_columnno) #define langscan_php_curtoken_beg_byteno(tokenizer) ((tokenizer)->extra->beg_byteno) #define langscan_php_curtoken_end_lineno(tokenizer) ((tokenizer)->extra->end_lineno) #define langscan_php_curtoken_end_columnno(tokenizer) ((tokenizer)->extra->end_columnno) #define langscan_php_curtoken_end_byteno(tokenizer) ((tokenizer)->extra->end_byteno) #define langscan_php_curtoken_text(tokenizer) ((tokenizer)->extra->text) #define langscan_php_curtoken_leng(tokenizer) ((tokenizer)->extra->leng) void langscan_php_extract_functions(langscan_php_tokenizer_t *); #endif