From kdevelop-devel Tue Sep 06 12:49:54 2005 From: Roberto Raggi Date: Tue, 06 Sep 2005 12:49:54 +0000 To: kdevelop-devel Subject: Re: r++ Lexer::token_stream[0]==null_token? Message-Id: <200509061449.54994.roberto () kdevelop ! org> X-MARC-Message: https://marc.info/?l=kdevelop-devel&m=112601111606184 Hi Steven! thanks for reporting it. It is for sure a bug :-) fixed with a slighly modified patch #457726 ciao robe On Tuesday 06 September 2005 14:37, Steven T. Hatton wrote: > In an effort to solve my problem of determining whether the member variable > of an AST derivative references a valid token, I modified the Lexer so that > it creates a "null_token" as the first element of the token_stream. I also > modified the Parser::parse() function to advance by > Parser::token_stream.nextToken() before parsing. This way, if I use the > AST node member variable with its default value of 0 as an index into the > token_stream, I get a "safe" memory location holding an indicator that > tells me it isn't a valid token form the source code. > > void Lexer::tokenize(const char *contents, std::size_t size) { > if (!s_initialized) > initialize_scan_table(); > > token_stream.resize(1024); > index = 0; > > // My modification ----------- > Token *current_token = &token_stream[index++]; > current_token->position = 0; > current_token->size = 0; > current_token->kind = Token_EOF; // or whatever. > //-------------------------- > > cursor = (const unsigned char *) contents; > begin_buffer = (const unsigned char *) contents; > end_buffer = cursor + size; > //... > } > > TranslationUnitAST *Parser::parse(const char *contents, std::size_t size, > pool *p) { > m_no_errors = false; > m_pool = p; > lexer.tokenize(contents, size); > token_stream.nextToken();//My modification > TranslationUnitAST *ast = 0; > parseTranslationUnit(ast); > return ast; > } > > It works in the few tests I've run on it. But since I really don't know > how the whole thing is supposed to fit to gether, I don't know if it breaks > anything. _______________________________________________ KDevelop-devel mailing list KDevelop-devel@barney.cs.uni-potsdam.de http://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel