0
0
mirror of https://github.com/python/cpython.git synced 2024-11-28 16:45:42 +01:00
cpython/Parser/tokenizer.h

68 lines
2.4 KiB
C
Raw Normal View History

#ifndef Py_TOKENIZER_H
#define Py_TOKENIZER_H
#ifdef __cplusplus
extern "C" {
#endif
1991-02-19 13:39:46 +01:00
/***********************************************************
1995-01-04 20:08:09 +01:00
Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
The Netherlands.
1991-02-19 13:39:46 +01:00
All Rights Reserved
2000-07-01 01:50:40 +02:00
Copyright (c) 2000, BeOpen.com.
Copyright (c) 1995-2000, Corporation for National Research Initiatives.
Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
All rights reserved.
See the file "Misc/COPYRIGHT" for information on usage and
redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1991-02-19 13:39:46 +01:00
******************************************************************/
1990-10-14 13:07:46 +01:00
/* Tokenizer interface */
#include "token.h" /* For token types */
#define MAXINDENT 100 /* Max indentation level */
/* Tokenizer state */
struct tok_state {
/* Input state; buf <= cur <= inp <= end */
/* NB an entire line is held in the buffer */
char *buf; /* Input buffer, or NULL; malloc'ed if fp != NULL */
1990-10-14 13:07:46 +01:00
char *cur; /* Next character in buffer */
char *inp; /* End of data in buffer */
char *end; /* End of input buffer if buf != NULL */
1994-08-30 10:27:36 +02:00
char *start; /* Start of current token if not NULL */
int done; /* E_OK normally, E_EOF at EOF, otherwise error code */
/* NB If done != E_OK, cur must be == inp!!! */
1990-10-14 13:07:46 +01:00
FILE *fp; /* Rest of input; NULL if tokenizing a string */
int tabsize; /* Tab spacing */
int indent; /* Current indentation index */
int indstack[MAXINDENT]; /* Stack of indents */
int atbol; /* Nonzero if at begin of new line */
int pendin; /* Pending indents (if > 0) or dedents (if < 0) */
char *prompt, *nextprompt; /* For interactive prompting */
int lineno; /* Current line number */
int level; /* () [] {} Parentheses nesting level */
/* Used to allow free continuations inside them */
/* Stuff for checking on different tab sizes */
char *filename; /* For error messages */
int altwarning; /* Issue warning if alternate tabs don't match */
int alterror; /* Issue error if alternate tabs don't match */
int alttabsize; /* Alternate tab spacing */
int altindstack[MAXINDENT]; /* Stack of alternate indents */
1990-10-14 13:07:46 +01:00
};
1997-04-29 23:03:06 +02:00
extern struct tok_state *PyTokenizer_FromString Py_PROTO((char *));
extern struct tok_state *PyTokenizer_FromFile
Py_PROTO((FILE *, char *, char *));
extern void PyTokenizer_Free Py_PROTO((struct tok_state *));
extern int PyTokenizer_Get Py_PROTO((struct tok_state *, char **, char **));
#ifdef __cplusplus
}
#endif
#endif /* !Py_TOKENIZER_H */