int Parser::lex(void* data) { YYSTYPE* yylval = static_cast<YYSTYPE*>(data); Token tok = nextToken(); switch (tok.type) { case AXISNAME: yylval->axis = tok.axis; break; case MULOP: case RELOP: yylval->numop = tok.numop; break; case EQOP: yylval->eqop = tok.eqop; break; case NODETYPE: case PI: case FUNCTIONNAME: case LITERAL: case VARIABLEREFERENCE: case NUMBER: case NAMETEST: yylval->str = new String(tok.str); registerString(yylval->str); break; } return tok.type; }
Task measurementTask(Measurement *measurement) { /* We must make a copy because given pointer is not guaranteed to * remain valid. */ MeasInitialData *mid = malloc(sizeof(*mid)); memcpy(&mid->meas, measurement, sizeof(*measurement)); mid->strBuf = NULL; /* Make task */ Task task; task.initialData = mid; task.start = &measStart; task.tick = &measTick; task.stop = &measStop; int strSize = measurement->measConf.renderStrBufSize; if (strSize <= 0) return task; /* No string stuff necessary */ /* Also create a render task to render the string */ char *string = malloc(strSize); string[0] = '\0'; mid->strBuf = string; RenderStringConfig rsc; rsc.string = string; rsc.x = measurement->measConf.renderStrX; rsc.y = measurement->measConf.renderStrY; registerString(&rsc); return task; }
static WicErrors scanComment(pTokData tokData) { while (1) { if (NEXT_CHAR == '*') { pushGetNextChar(); if (NEXT_CHAR == '/') { STATE = TS_START; getNextChar(); popChars(1); goto NormalReturn; } } else if (NEXT_CHAR == '\n') { getNextChar(); goto NormalReturn; } else if ((char) NEXT_CHAR == (char) EOF) { STATE = TS_START; return RERR_EOF_IN_COMMENT; } else { pushGetNextChar(); } } NormalReturn: tokData->code = Y_PRE_COMMENT; tokData->repr.string = registerString(wicStrdup(currTok), FREE_STRING); return ERR_NONE; }
// http://www.w3.org/TR/css3-syntax/#consume-a-name CSSParserString CSSTokenizer::consumeName() { // Names without escapes get handled without allocations for (unsigned size = 0; ; ++size) { UChar cc = m_input.peekWithoutReplacement(size); if (cc == '\0' || cc == '\\') break; if (!isNameChar(cc)) { unsigned startOffset = m_input.offset(); m_input.advance(size); return m_input.rangeAsCSSParserString(startOffset, size); } } StringBuilder result; while (true) { UChar cc = consume(); if (isNameChar(cc)) { result.append(cc); continue; } if (twoCharsAreValidEscape(cc, m_input.nextInputChar())) { result.append(consumeEscape()); continue; } reconsume(cc); return registerString(result.toString()); } }
w_package createPackage(w_string name, w_instance loader) { w_package p = allocClearedMem(sizeof(w_Package)); p->name = registerString(name); p->label = "package"; p->loader = loader; return p; }
InspectorState::InspectorState(InspectorClient* client) : m_client(client) { registerBoolean(monitoringXHR, false, "monitoringXHR", "xhrMonitor"); registerBoolean(resourceTrackingEnabled, false, "resourceTrackingEnabled", (const char*)0); registerBoolean(resourceTrackingAlwaysEnabled, false, (const char*)0, "resourceTrackingEnabled"); registerBoolean(timelineProfilerEnabled, false, "timelineProfilerEnabled", (const char*)0); registerBoolean(searchingForNode, false, "searchingForNodeEnabled", (const char*)0); registerBoolean(profilerAlwaysEnabled, false, (const char*)0, "profilerEnabled"); registerString(frontendSettings, "", (const char*)0, "frontendSettings"); registerBoolean(debuggerAlwaysEnabled, false, (const char*)0, "debuggerEnabled"); registerString(lastActivePanel, InspectorController::LastActivePanel, (const char*)0, "lastActivePanel"); registerBoolean(inspectorStartsAttached, true, (const char*)0, "InspectorStartsAttached"); registerLong(inspectorAttachedHeight, InspectorController::defaultAttachedHeight, (const char*)0, "inspectorAttachedHeight"); registerLong(pauseOnExceptionsState, 0, "pauseOnExceptionsState", (const char*)0); registerBoolean(consoleMessagesEnabled, false, "consoleMessagesEnabled", (const char*)0); }
uint32_t OsmAnd::MapStyle_P::lookupStringId( const QString& value ) { uint32_t id; if(lookupStringId(value, id)) return id; return registerString(value); }
// http://dev.w3.org/csswg/css-syntax/#consume-url-token CSSParserToken CSSTokenizer::consumeUrlToken() { consumeUntilNonWhitespace(); // URL tokens without escapes get handled without allocations for (unsigned size = 0; ; size++) { UChar cc = m_input.peekWithoutReplacement(size); if (cc == ')') { unsigned startOffset = m_input.offset(); m_input.advance(size + 1); return CSSParserToken(UrlToken, m_input.rangeAsCSSParserString(startOffset, size)); } if (cc <= ' ' || cc == '\\' || cc == '"' || cc == '\'' || cc == '(' || cc == '\x7f') break; } StringBuilder result; while (true) { UChar cc = consume(); if (cc == ')' || cc == kEndOfFileMarker) return CSSParserToken(UrlToken, registerString(result.toString())); if (isHTMLSpace(cc)) { consumeUntilNonWhitespace(); if (consumeIfNext(')') || m_input.nextInputChar() == kEndOfFileMarker) return CSSParserToken(UrlToken, registerString(result.toString())); break; } if (cc == '"' || cc == '\'' || cc == '(' || isNonPrintableCodePoint(cc)) break; if (cc == '\\') { if (twoCharsAreValidEscape(cc, m_input.nextInputChar())) { result.append(consumeEscape()); continue; } break; } result.append(cc); } consumeBadUrlRemnants(); return CSSParserToken(BadUrlToken); }
pToken createIDTokenAfter( char *str, pTokPos pos) { pToken tok = createToken(createTokData(), dupTokPos(pos, NULL)); tok->pos->spacesBefore = 1; tok->pos->linesBefore = 0; tok->data->code = Y_ID; tok->data->repr.string = registerString(wicStrdup(str), FREE_STRING); return tok; }
void HeapGraphSerializer::addRootNode() { for (size_t i = 0; i < m_roots.size(); i++) reportEdgeImpl(toNodeId(m_roots[i]), 0, m_edgeTypes[WTF::PointerMember]); m_nodes->addItem(registerString("Root")); m_nodes->addItem(0); m_nodes->addItem(s_firstNodeId + m_address2NodeIdMap.size() + m_leafCount); m_nodes->addItem(0); m_nodes->addItem(m_roots.size()); }
void HeapGraphSerializer::reportEdgeImpl(const int toNodeId, const char* name, int memberType) { ASSERT(memberType >= 0); ASSERT(memberType < WTF::LastMemberTypeEntry); m_edges->addItem(memberType); m_edges->addItem(registerString(name)); m_edges->addItem(toNodeId); ++m_nodeEdgesCount; }
InspectorState::InspectorState(InspectorClient* client) : m_client(client) { registerBoolean(monitoringXHR, false, "monitoringXHREnabled", "xhrMonitor"); registerBoolean(timelineProfilerEnabled, false, "timelineProfilerEnabled", String()); registerBoolean(searchingForNode, false, "searchingForNodeEnabled", String()); registerBoolean(profilerAlwaysEnabled, false, String(), "profilerEnabled"); registerBoolean(debuggerAlwaysEnabled, false, String(), "debuggerEnabled"); registerBoolean(inspectorStartsAttached, true, String(), "InspectorStartsAttached"); registerLong(inspectorAttachedHeight, InspectorController::defaultAttachedHeight, String(), "inspectorAttachedHeight"); registerLong(pauseOnExceptionsState, 0, "pauseOnExceptionsState", String()); registerBoolean(consoleMessagesEnabled, false, "consoleMessagesEnabled", String()); registerBoolean(userInitiatedProfiling, false, "userInitiatedProfiling", String()); registerObject(stickyBreakpoints, String(), String()); registerString(injectedScriptSource, String(), String(), String()); }
void registerAllTypes(asIScriptEngine* engine) { registerColor(engine); registerInt(engine); registerIntVector(engine); registerFloat(engine); registerFloatVector(engine); registerGradient(engine); registerPoint(engine); registerRect(engine); registerString(engine); registerMesh(engine); // After Point registerPath(engine); // After Point registerPolygon(engine); // After Path registerAnimation(engine); }
static WicErrors scanCPlusPlusComment(pTokData tokData) { char prevChar = 0; while (1) { if (NEXT_CHAR == '\n') { tokData->code = Y_PRE_COMMENT; tokData->repr.string = registerString(wicStrdup(currTok), FREE_STRING); if (prevChar != '\\') { STATE = TS_START; } return ERR_NONE; } else { prevChar = NEXT_CHAR; pushGetNextChar(); } } }
// http://dev.w3.org/csswg/css-syntax/#consume-a-string-token CSSParserToken CSSTokenizer::consumeStringTokenUntil(UChar endingCodePoint) { // Strings without escapes get handled without allocations for (unsigned size = 0; ; size++) { UChar cc = m_input.peekWithoutReplacement(size); if (cc == endingCodePoint) { unsigned startOffset = m_input.offset(); m_input.advance(size + 1); return CSSParserToken(StringToken, m_input.rangeAsCSSParserString(startOffset, size)); } if (isNewLine(cc)) { m_input.advance(size); return CSSParserToken(BadStringToken); } if (cc == '\0' || cc == '\\') break; } StringBuilder output; while (true) { UChar cc = consume(); if (cc == endingCodePoint || cc == kEndOfFileMarker) return CSSParserToken(StringToken, registerString(output.toString())); if (isNewLine(cc)) { reconsume(cc); return CSSParserToken(BadStringToken); } if (cc == '\\') { if (m_input.nextInputChar() == kEndOfFileMarker) continue; if (isNewLine(m_input.nextInputChar())) consumeSingleWhitespaceIfNext(); // This handles \r\n for us else output.append(consumeEscape()); } else { output.append(cc); } } }
static WicErrors scanIncludeFileName(pTokData tokData, char termChar) { WicErrors retVal = ERR_NONE; for( ;; ) { if (NEXT_CHAR == '\n' || NEXT_CHAR == (char) EOF) { retVal = RERR_INV_INCLUDE_FILE_NAME; break; } if( NEXT_CHAR == termChar ) { getNextChar(); break; } pushGetNextChar(); } if (retVal == ERR_NONE) { tokData->code = Y_INCLUDE_FILE_NAME; tokData->repr.string = registerString(wicStrdup(currTok), FREE_STRING); } return( retVal ); }
HeapGraphSerializer::HeapGraphSerializer(Client* client) : m_client(client) , m_strings(Strings::create()) , m_edges(Edges::create()) , m_nodeEdgesCount(0) , m_nodes(Nodes::create()) , m_baseToRealNodeIdMap(BaseToRealNodeIdMap::create()) , m_typeStrings(InspectorObject::create()) , m_leafCount(0) { ASSERT(m_client); m_strings->addItem(String()); // An empty string with 0 index. memset(m_edgeTypes, 0, sizeof(m_edgeTypes)); m_edgeTypes[WTF::PointerMember] = registerTypeString("weak"); m_edgeTypes[WTF::RetainingPointer] = registerTypeString("property"); // FIXME: It is used as a magic constant for 'object' node type. registerTypeString("object"); m_unknownClassNameId = registerString("unknown"); }
/** ** Get the w_Package for a class, creating it if it does not already exist. */ w_package getPackageForClazz(w_clazz clazz, w_instance loader) { w_string class_name = clazz->dotified; w_instance effective_loader = loader ? loader : systemClassLoader; w_hashtable ht = loader2packages(effective_loader); w_string package_name; w_int i; w_int j; w_package p; for (i = 0; string_char(class_name, i) == '['; ++i); for (j = string_length(class_name) - 1; string_char(class_name, j) != '.'; --j); package_name = j > i ? w_substring(class_name, i, j - i) : registerString(string_empty); ht_lock(ht); p = (w_package)ht_read_no_lock(ht, (w_word)package_name); if (!p) { p = createPackage(package_name, effective_loader); ht_write_no_lock(ht, (w_word)package_name, (w_word)p); } clazz->package = p; ht_unlock(ht); deregisterString(package_name); return p; }
pToken createPLUSToken(void) { pToken tok = createToken(createTokData(), NULL); tok->data->code = Y_PLUS; tok->data->repr.string = registerString("+", !FREE_STRING); return tok; }
int HeapGraphSerializer::registerTypeString(const char* string) { int stringId = registerString(string); m_typeStrings->setNumber(string, stringId); return stringId; }
WicErrors getNextToken(pToken tok) { pTokTab tokTabPtr; WicErrors retVal = ERR_NONE; static long tokAfterDefine = 2; // used to flag '(' in #define x( as a // special parentheses int temp; assert(currTokF >= 0); currTokLen = 0; currTok[currTokLen] = 0; TOK_NUM_AFTER_NEW_LINE++; /* Used for #preprocessor directives */ tokAfterDefine++; /* Used for #preprocessor directives */ g_currLineNum = LINE_NUM; g_currColNum = COL_NUM; /* When getNextToken gets called, STATE may be one of: TS_START, TS_COMMENT. */ temp = skipBlank(); if (STATE == TS_START) { setTokPos( tok->pos, TOK_FILE_NAME, currTokF, LINE_NUM, COL_NUM, LINES_BEFORE, temp, orderLineNum ); while (NEXT_CHAR == '') { getNextChar(); tok->pos->spacesBefore = skipBlank(); } if (isalpha(NEXT_CHAR) || NEXT_CHAR == '_') { if (!scanId()) { char saveChar = NEXT_CHAR; currTokLen = 0; currTok[currTokLen] = 0; getNextChar(); if (saveChar == '"') { retVal = scanStr(tok->data); } else { retVal = scanChar(tok->data); } goto Return; } } else if (isdigit(NEXT_CHAR)) { retVal = scanNum(tok->data); goto Return; } else switch (NEXT_CHAR) { case '\'': getNextChar(); retVal = scanChar(tok->data); goto Return; break; case '"': if (currLineIsInclude) { getNextChar(); retVal = scanIncludeFileName(tok->data, '"'); goto Return; } else { getNextChar(); retVal = scanStr(tok->data); goto Return; break; } case '\n': pushGetNextChar(); currLineIsInclude = 0; break; case '!': pushGetNextChar(); if (NEXT_CHAR == '=') { pushGetNextChar(); } break; case '#': pushGetNextChar(); if (TOK_NUM_AFTER_NEW_LINE == 1) { skipBlank(); if (isalpha(NEXT_CHAR) || NEXT_CHAR == '_') { scanId(); } else { tok->data->code = Y_PRE_NULL; retVal = ERR_NONE; goto Return; } } else { if (NEXT_CHAR == '#') { pushGetNextChar(); } } break; case '%': pushGetNextChar(); if (NEXT_CHAR == '=') { pushGetNextChar(); } break; case '&': pushGetNextChar(); if (NEXT_CHAR == '&') { pushGetNextChar(); if (NEXT_CHAR == '=') { pushGetNextChar(); } } break; case '(': pushGetNextChar(); break; case ')': pushGetNextChar(); break; case '*': pushGetNextChar(); if (NEXT_CHAR == '=') { pushGetNextChar(); } break; case '+': pushGetNextChar(); if (NEXT_CHAR == '+') { pushGetNextChar(); } else if (NEXT_CHAR == '=') { pushGetNextChar(); } break; case ',': pushGetNextChar(); break; case '-': pushGetNextChar(); if (NEXT_CHAR == '-') { pushGetNextChar(); } else if (NEXT_CHAR == '=') { pushGetNextChar(); } else if (NEXT_CHAR == '>') { pushGetNextChar(); } break; case '.': pushGetNextChar(); if (NEXT_CHAR == '.') { pushGetNextChar(); if (NEXT_CHAR == '.') { pushGetNextChar(); } else { retVal = RERR_INV_CHAR; goto Return; } } else if (isdigit(NEXT_CHAR)) { if (pushFloatDotExp(tok->data, 1)) { retVal = convStr2Const(tok->data); goto Return; } else { retVal = RERR_INV_CHAR; goto Return; } } break; case '/': pushGetNextChar(); if (NEXT_CHAR == '=') { pushGetNextChar(); } else if (NEXT_CHAR == '*') { /* comment begin */ popChars(1); STATE = TS_COMMENT; getNextChar(); retVal = scanComment(tok->data); goto Return; } else if (NEXT_CHAR == '/') { popChars(1); STATE = TS_COMMENT; getNextChar(); retVal = scanCPlusPlusComment(tok->data); goto Return; } break; case ':': pushGetNextChar(); if (NEXT_CHAR == '>') { pushGetNextChar(); } break; case ';': pushGetNextChar(); break; case '<': if (currLineIsInclude) { getNextChar(); retVal = scanIncludeFileName(tok->data, '>'); goto Return; } else { pushGetNextChar(); if (NEXT_CHAR == '<') { pushGetNextChar(); if (NEXT_CHAR == '=') { pushGetNextChar(); } } else if (NEXT_CHAR == '=') { pushGetNextChar(); } } break; case '=': pushGetNextChar(); if (NEXT_CHAR == '=') { pushGetNextChar(); } break; case '>': pushGetNextChar(); if (NEXT_CHAR == '>') { pushGetNextChar(); if (NEXT_CHAR == '=') { pushGetNextChar(); } } else if (NEXT_CHAR == '=') { pushGetNextChar(); } break; case '?': pushGetNextChar(); break; case '[': pushGetNextChar(); break; case ']': pushGetNextChar(); break; case '^': pushGetNextChar(); if (NEXT_CHAR == '=') pushGetNextChar(); break; case '{': pushGetNextChar(); break; case '|': pushGetNextChar(); if (NEXT_CHAR == '=') { pushGetNextChar(); } else if (NEXT_CHAR == '|') { pushGetNextChar(); } break; case '}': pushGetNextChar(); break; case '~': pushGetNextChar(); break; case (char) EOF: tok->data->code = Y_EOF; retVal = ERR_NONE; goto Return; break; default: /* Eat up an ivalid character */ getNextChar(); retVal = RERR_INV_CHAR; goto Return; } tokTabPtr = tabLookup(currTok); if (tokTabPtr != NULL) { tok->data->code = tokTabPtr->code; if (tok->data->code == Y_PRE_INCLUDE) { currLineIsInclude = 1; } if (tok->data->code == Y_PRE_DEFINE) { tokAfterDefine = 0; } if (tok->data->code == Y_LEFT_PAREN && tokAfterDefine == 2) { // the case of #define x(... if (tok->pos->spacesBefore == 0) { tok->data->code = Y_PRE_SPECIAL_LEFT_PAREN; } } tok->data->repr.string = registerString(tokTabPtr->name, !FREE_STRING); } else { if (currTok[0] == '#') { retVal = RERR_INV_PREPROCESSOR; goto Return; } else { tok->data->code = Y_ID; tok->data->repr.string = registerString(wicStrdup(currTok), FREE_STRING); } } } else if (STATE == TS_COMMENT) { setTokPos(tok->pos, TOK_FILE_NAME, currTokF, LINE_NUM, COL_NUM, LINES_BEFORE, 0, orderLineNum); retVal = scanComment(tok->data); goto Return; } else { assert(0); } Return: if (tok->data->code != Y_PRE_NEWLINE) { tok->pos->linesBefore = tok->pos->lineNum - PREV_TOK_LINE_NUM; PREV_TOK_LINE_NUM = tok->pos->lineNum; } else { tok->pos->linesBefore = 0; } zapTokPos(g_currPos); g_currPos = dupTokPos(tok->pos, NULL); return retVal; }
pToken createCommentToken(char *str, pTokPos pos) { pToken tok = createToken(createTokData(), pos); tok->data->code = Y_PRE_COMMENT; tok->data->repr.string = registerString(str, FREE_STRING); return tok; }
pToken createEQUALToken(void) { pToken tok = createToken(createTokData(), NULL); tok->data->code = Y_EQUAL; tok->data->repr.string = registerString("=", !FREE_STRING); return tok; }