static int yylook(void) { int tok = 0; while (1) { if ((tok = Scanner_token(scan)) == 0) return 0; if (tok == SWIG_TOKEN_ERROR) return 0; cparse_start_line = Scanner_start_line(scan); cparse_line = Scanner_line(scan); cparse_file = Scanner_file(scan); switch(tok) { case SWIG_TOKEN_ID: return ID; case SWIG_TOKEN_LPAREN: return LPAREN; case SWIG_TOKEN_RPAREN: return RPAREN; case SWIG_TOKEN_SEMI: return SEMI; case SWIG_TOKEN_COMMA: return COMMA; case SWIG_TOKEN_STAR: return STAR; case SWIG_TOKEN_RBRACE: num_brace--; if (num_brace < 0) { Swig_error(cparse_file, cparse_line, "Syntax error. Extraneous '}'\n"); num_brace = 0; } else { return RBRACE; } break; case SWIG_TOKEN_LBRACE: last_brace = num_brace; num_brace++; return LBRACE; case SWIG_TOKEN_EQUAL: return EQUAL; case SWIG_TOKEN_EQUALTO: return EQUALTO; case SWIG_TOKEN_PLUS: return PLUS; case SWIG_TOKEN_MINUS: return MINUS; case SWIG_TOKEN_SLASH: return SLASH; case SWIG_TOKEN_AND: return AND; case SWIG_TOKEN_LAND: return LAND; case SWIG_TOKEN_OR: return OR; case SWIG_TOKEN_LOR: return LOR; case SWIG_TOKEN_XOR: return XOR; case SWIG_TOKEN_NOT: return NOT; case SWIG_TOKEN_LNOT: return LNOT; case SWIG_TOKEN_NOTEQUAL: return NOTEQUALTO; case SWIG_TOKEN_LBRACKET: return LBRACKET; case SWIG_TOKEN_RBRACKET: return RBRACKET; case SWIG_TOKEN_QUESTION: return QUESTIONMARK; case SWIG_TOKEN_LESSTHAN: return LESSTHAN; case SWIG_TOKEN_LTEQUAL: return LESSTHANOREQUALTO; case SWIG_TOKEN_LSHIFT: return LSHIFT; case SWIG_TOKEN_GREATERTHAN: return GREATERTHAN; case SWIG_TOKEN_GTEQUAL: return GREATERTHANOREQUALTO; case SWIG_TOKEN_RSHIFT: return RSHIFT; case SWIG_TOKEN_PERIOD: return PERIOD; case SWIG_TOKEN_MODULO: return MODULO; case SWIG_TOKEN_COLON: return COLON; case SWIG_TOKEN_DCOLONSTAR: return DSTAR; case SWIG_TOKEN_DCOLON: { int nexttok = Scanner_token(scan); if (nexttok == SWIG_TOKEN_STAR) { return DSTAR; } else if (nexttok == SWIG_TOKEN_NOT) { return DCNOT; } else { Scanner_pushtoken(scan,nexttok,Scanner_text(scan)); if (!last_id) { scanner_next_token(DCOLON); return NONID; } else { return DCOLON; } } } break; /* Look for multi-character sequences */ case SWIG_TOKEN_RSTRING: yylval.type = NewString(Scanner_text(scan)); return TYPE_RAW; case SWIG_TOKEN_STRING: yylval.id = Swig_copy_string(Char(Scanner_text(scan))); return STRING; case SWIG_TOKEN_CHAR: yylval.str = NewString(Scanner_text(scan)); if (Len(yylval.str) == 0) { Swig_error(cparse_file, cparse_line, "Empty character constant\n"); Printf(stdout,"%d\n", Len(Scanner_text(scan))); } return CHARCONST; /* Numbers */ case SWIG_TOKEN_INT: return NUM_INT; case SWIG_TOKEN_UINT: return NUM_UNSIGNED; case SWIG_TOKEN_LONG: return NUM_LONG; case SWIG_TOKEN_ULONG: return NUM_ULONG; case SWIG_TOKEN_LONGLONG: return NUM_LONGLONG; case SWIG_TOKEN_ULONGLONG: return NUM_ULONGLONG; case SWIG_TOKEN_DOUBLE: case SWIG_TOKEN_FLOAT: return NUM_FLOAT; case SWIG_TOKEN_BOOL: return NUM_BOOL; case SWIG_TOKEN_POUND: Scanner_skip_line(scan); yylval.id = Swig_copy_string(Char(Scanner_text(scan))); return POUND; break; case SWIG_TOKEN_CODEBLOCK: yylval.str = NewString(Scanner_text(scan)); return HBLOCK; case SWIG_TOKEN_COMMENT: { String *cmt = Scanner_text(scan); char *loc = Char(cmt); if ((strncmp(loc,"/*@SWIG",7) == 0) && (loc[Len(cmt)-3] == '@')) { scanner_locator(cmt); } } break; case SWIG_TOKEN_ENDLINE: break; case SWIG_TOKEN_BACKSLASH: break; default: Swig_error(cparse_file, cparse_line, "Illegal token '%s'.\n", Scanner_text(scan)); return (ILLEGAL); } } }
static int yylook(void) { int tok = 0; while (1) { if ((tok = Scanner_token(scan)) == 0) return 0; if (tok == SWIG_TOKEN_ERROR) return 0; cparse_start_line = Scanner_start_line(scan); cparse_line = Scanner_line(scan); cparse_file = Scanner_file(scan); switch(tok) { case SWIG_TOKEN_ID: return ID; case SWIG_TOKEN_LPAREN: return LPAREN; case SWIG_TOKEN_RPAREN: return RPAREN; case SWIG_TOKEN_SEMI: return SEMI; case SWIG_TOKEN_COMMA: return COMMA; case SWIG_TOKEN_STAR: return STAR; case SWIG_TOKEN_RBRACE: num_brace--; if (num_brace < 0) { Swig_error(cparse_file, cparse_line, "Syntax error. Extraneous '}'\n"); num_brace = 0; } else { return RBRACE; } break; case SWIG_TOKEN_LBRACE: last_brace = num_brace; num_brace++; return LBRACE; case SWIG_TOKEN_EQUAL: return EQUAL; case SWIG_TOKEN_EQUALTO: return EQUALTO; case SWIG_TOKEN_PLUS: return PLUS; case SWIG_TOKEN_MINUS: return MINUS; case SWIG_TOKEN_SLASH: return SLASH; case SWIG_TOKEN_AND: return AND; case SWIG_TOKEN_LAND: return LAND; case SWIG_TOKEN_OR: return OR; case SWIG_TOKEN_LOR: return LOR; case SWIG_TOKEN_XOR: return XOR; case SWIG_TOKEN_NOT: return NOT; case SWIG_TOKEN_LNOT: return LNOT; case SWIG_TOKEN_NOTEQUAL: return NOTEQUALTO; case SWIG_TOKEN_LBRACKET: return LBRACKET; case SWIG_TOKEN_RBRACKET: return RBRACKET; case SWIG_TOKEN_QUESTION: return QUESTIONMARK; case SWIG_TOKEN_LESSTHAN: return LESSTHAN; case SWIG_TOKEN_LTEQUAL: return LESSTHANOREQUALTO; case SWIG_TOKEN_LSHIFT: return LSHIFT; case SWIG_TOKEN_GREATERTHAN: return GREATERTHAN; case SWIG_TOKEN_GTEQUAL: return GREATERTHANOREQUALTO; case SWIG_TOKEN_RSHIFT: return RSHIFT; case SWIG_TOKEN_PERIOD: return PERIOD; case SWIG_TOKEN_MODULO: return MODULO; case SWIG_TOKEN_COLON: return COLON; case SWIG_TOKEN_DCOLONSTAR: return DSTAR; case SWIG_TOKEN_DCOLON: { int nexttok = Scanner_token(scan); if (nexttok == SWIG_TOKEN_STAR) { return DSTAR; } else if (nexttok == SWIG_TOKEN_NOT) { return DCNOT; } else { Scanner_pushtoken(scan,nexttok,Scanner_text(scan)); if (!last_id) { scanner_next_token(DCOLON); return NONID; } else { return DCOLON; } } } break; /* Look for multi-character sequences */ case SWIG_TOKEN_RSTRING: yylval.type = NewString(Scanner_text(scan)); return TYPE_RAW; case SWIG_TOKEN_STRING: yylval.id = Swig_copy_string(Char(Scanner_text(scan))); return STRING; case SWIG_TOKEN_CHAR: yylval.str = NewString(Scanner_text(scan)); if (Len(yylval.str) == 0) { Swig_error(cparse_file, cparse_line, "Empty character constant\n"); Printf(stdout,"%d\n", Len(Scanner_text(scan))); } return CHARCONST; /* Numbers */ case SWIG_TOKEN_INT: return NUM_INT; case SWIG_TOKEN_UINT: return NUM_UNSIGNED; case SWIG_TOKEN_LONG: return NUM_LONG; case SWIG_TOKEN_ULONG: return NUM_ULONG; case SWIG_TOKEN_LONGLONG: return NUM_LONGLONG; case SWIG_TOKEN_ULONGLONG: return NUM_ULONGLONG; case SWIG_TOKEN_DOUBLE: case SWIG_TOKEN_FLOAT: return NUM_FLOAT; case SWIG_TOKEN_BOOL: return NUM_BOOL; case SWIG_TOKEN_POUND: Scanner_skip_line(scan); yylval.id = Swig_copy_string(Char(Scanner_text(scan))); return POUND; break; case SWIG_TOKEN_CODEBLOCK: yylval.str = NewString(Scanner_text(scan)); return HBLOCK; case SWIG_TOKEN_COMMENT: { String *cmt = Scanner_text(scan); char *loc = Char(cmt); if ((strncmp(loc,"/*@SWIG",7) == 0) && (loc[Len(cmt)-3] == '@')) { Scanner_locator(scan, cmt); } if (scan_doxygen_comments) { /* else just skip this node, to avoid crashes in parser module*/ if (strncmp(loc, "/**<", 4) == 0 || strncmp(loc, "///<", 4) == 0||strncmp(loc, "/*!<", 4) == 0||strncmp(loc, "//!<", 4) == 0) { /* printf("Doxygen Post Comment: %s lines %d-%d [%s]\n", Char(Scanner_file(scan)), Scanner_start_line(scan), Scanner_line(scan), loc); */ yylval.str = NewString(loc); Setline(yylval.str, Scanner_start_line(scan)); Setfile(yylval.str, Scanner_file(scan)); return DOXYGENPOSTSTRING; } if (strncmp(loc, "/**", 3) == 0 || strncmp(loc, "///", 3) == 0||strncmp(loc, "/*!", 3) == 0||strncmp(loc, "//!", 3) == 0) { /* printf("Doxygen Comment: %s lines %d-%d [%s]\n", Char(Scanner_file(scan)), Scanner_start_line(scan), Scanner_line(scan), loc); */ /* ignore comments like / * * * and / * * /, which are also ignored by Doxygen */ if (loc[3] != '*' && loc[3] != '/') { yylval.str = NewString(loc); Setline(yylval.str, Scanner_start_line(scan)); Setfile(yylval.str, Scanner_file(scan)); return DOXYGENSTRING; } } } } break; case SWIG_TOKEN_ENDLINE: break; case SWIG_TOKEN_BACKSLASH: break; default: Swig_error(cparse_file, cparse_line, "Illegal token '%s'.\n", Scanner_text(scan)); return (ILLEGAL); } } }