From 46ba7769c4a0600c47f3de6871815398bab7ca91 Mon Sep 17 00:00:00 2001 From: albert-github Date: Wed, 24 Aug 2016 18:12:24 +0200 Subject: [PATCH] Initialization of python variables and type determination A bit better python initialization (not only the fist "word") and subsequent determination of the type. --- src/pyscanner.l | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/pyscanner.l b/src/pyscanner.l index 35d305dc056..3bebe0eeb58 100644 --- a/src/pyscanner.l +++ b/src/pyscanner.l @@ -1205,51 +1205,49 @@ STARTDOCSYMS "##" current->initializer += " "; } {B} { // spaces + current->initializer += yytext; } {INTNUMBER} { // integer value - current->type = "int"; + if (current-> type.isEmpty()) current->type = "int"; current->initializer += yytext; - BEGIN(VariableEnd); } {FLOATNUMBER} { // floating point value - current->type = "float"; + if (current->type.isEmpty()) current->type = "float"; current->initializer += yytext; - BEGIN(VariableEnd); } {BOOL} { // boolean value - current->type = "bool"; + if (current->type.isEmpty()) current->type = "bool"; current->initializer += yytext; - BEGIN(VariableEnd); } {STRINGPREFIX}?"'" { // string - current->type = "string"; + if (current->type.isEmpty()) current->type = "string"; current->initializer += yytext; g_copyString=¤t->initializer; - g_stringContext=VariableEnd; + g_stringContext=VariableDec; BEGIN( SingleQuoteString ); } {STRINGPREFIX}?"\"" { // string - current->type = "string"; + if (current->type.isEmpty()) current->type = "string"; current->initializer += yytext; g_copyString=¤t->initializer; - g_stringContext=VariableEnd; + g_stringContext=VariableDec; BEGIN( DoubleQuoteString ); } {TRIDOUBLEQUOTE} { // start of a comment block - current->type = "string"; + if (current->type.isEmpty()) current->type = "string"; current->initializer += yytext; g_doubleQuote=TRUE; g_copyString=¤t->initializer; - g_stringContext=VariableEnd; + g_stringContext=VariableDec; BEGIN(TripleString); } {TRISINGLEQUOTE} { // start of a comment block - current->type = "string"; + if (current->type.isEmpty()) current->type = "string"; current->initializer += yytext; g_doubleQuote=FALSE; g_copyString=¤t->initializer; - g_stringContext=VariableEnd; + g_stringContext=VariableDec; BEGIN(TripleString); } "(" { // tuple, only when direct after = @@ -1283,6 +1281,20 @@ STARTDOCSYMS "##" BEGIN( VariableEnd ); } {IDENTIFIER} { + // do something based on the type of the IDENTIFIER + if (current->type.isEmpty()) + { + QListIterator eli(*(current_root->children())); + Entry *child; + for (eli.toFirst();(child=eli.current());++eli) + { + if (child->name == QCString(yytext)) + { + current->type = child->type; + break; + } + } + } g_start_init = FALSE; current->initializer+=yytext; }