xref: /Universal-ctags/parsers/tcl.h (revision 1c3778f39cb6b22f33631b8570724d48eefd2335)
16ae73029SMasatake YAMATO /*
26ae73029SMasatake YAMATO *   Copyright (c) 2017, Masatake YAMATO
36ae73029SMasatake YAMATO *
46ae73029SMasatake YAMATO *   This source code is released for free distribution under the terms of the
56ae73029SMasatake YAMATO *   GNU General Public License version 2 or (at your option) any later version.
66ae73029SMasatake YAMATO */
76ae73029SMasatake YAMATO 
86ae73029SMasatake YAMATO #ifndef CTAGS_PARSER_TCL_H
96ae73029SMasatake YAMATO #define CTAGS_PARSER_TCL_H
106ae73029SMasatake YAMATO 
116ae73029SMasatake YAMATO /*
126ae73029SMasatake YAMATO *   INCLUDE FILES
136ae73029SMasatake YAMATO */
146ae73029SMasatake YAMATO #include "general.h"  /* must always come first */
156ae73029SMasatake YAMATO 
166ae73029SMasatake YAMATO #include "subparser.h"
176ae73029SMasatake YAMATO #include "tokeninfo.h"
186ae73029SMasatake YAMATO 
196ae73029SMasatake YAMATO typedef struct sTclSubparser tclSubparser;
206ae73029SMasatake YAMATO 
216ae73029SMasatake YAMATO enum TclTokenType {
226ae73029SMasatake YAMATO 	/* 0..255 are the byte's value */
236ae73029SMasatake YAMATO 	TOKEN_TCL_EOF = 256,
246ae73029SMasatake YAMATO 	TOKEN_TCL_UNDEFINED,
256ae73029SMasatake YAMATO 	TOKEN_TCL_KEYWORD,
266ae73029SMasatake YAMATO 	TOKEN_TCL_IDENTIFIER,
276ae73029SMasatake YAMATO 	TOKEN_TCL_VARIABLE,
286ae73029SMasatake YAMATO 	TOKEN_TCL_EOL,
296ae73029SMasatake YAMATO 	TOKEN_TCL_STRING,
306ae73029SMasatake YAMATO };
316ae73029SMasatake YAMATO 
326ae73029SMasatake YAMATO struct sTclSubparser {
336ae73029SMasatake YAMATO 	subparser subparser;
346ae73029SMasatake YAMATO 
35*5d9d66cfSMasatake YAMATO 	/* `pstate' is needed to call newTclToken(). */
36*5d9d66cfSMasatake YAMATO 	void (* namespaceImportNotify) (tclSubparser *s, char *namespace,
37*5d9d66cfSMasatake YAMATO 									void *pstate);
386ae73029SMasatake YAMATO 	/* Return CORK_NIL if the command line is NOT consumed.
396ae73029SMasatake YAMATO 	   If a positive integer is returned, end: field may
406ae73029SMasatake YAMATO 	   be attached by tcl base parser.
416ae73029SMasatake YAMATO 	   Return CORK_NIL - 1 if the command line is consumed
426ae73029SMasatake YAMATO 	   but not tag is made. */
436ae73029SMasatake YAMATO 	int (* commandNotify) (tclSubparser *s, char *command,
44*5d9d66cfSMasatake YAMATO 						   int parentIndex,
45*5d9d66cfSMasatake YAMATO 						   void *pstate);
466ae73029SMasatake YAMATO };
476ae73029SMasatake YAMATO 
48*5d9d66cfSMasatake YAMATO extern tokenInfo *newTclToken (void *pstate);
4994e60171SMasatake YAMATO extern void skipToEndOfTclCmdline (tokenInfo *const token);
506ae73029SMasatake YAMATO 
516ae73029SMasatake YAMATO #endif	/* CTAGS_PARSER_TCL_H */
52