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