MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / fxNewParserSymbol

Function fxNewParserSymbol

xs/sources/xsScript.c:223–258  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

221}
222
223txSymbol* fxNewParserSymbol(txParser* parser, txString theString)
224{
225 txString aString;
226 txSize aLength;
227 txU4 aSum;
228 txU4 aModulo;
229 txSymbol* aSymbol;
230
231 aString = theString;
232 aLength = 0;
233 aSum = 0;
234 while(*aString != 0) {
235 aLength++;
236 aSum = (aSum << 1) + *aString++;
237 }
238 aSum &= 0x7FFFFFFF;
239 aModulo = aSum % parser->symbolModulo;
240 aSymbol = parser->symbolTable[aModulo];
241 while (aSymbol != C_NULL) {
242 if (aSymbol->sum == aSum)
243 if (c_strcmp(aSymbol->string, theString) == 0)
244 break;
245 aSymbol = aSymbol->next;
246 }
247 if (aSymbol == C_NULL) {
248 aSymbol = fxNewParserChunk(parser, sizeof(txSymbol));
249 aSymbol->next = parser->symbolTable[aModulo];
250 aSymbol->ID = -1;
251 aSymbol->length = aLength + 1;
252 aSymbol->string = fxNewParserString(parser, theString, aLength);
253 aSymbol->sum = aSum;
254 aSymbol->usage = 0;
255 parser->symbolTable[aModulo] = aSymbol;
256 }
257 return aSymbol;
258}
259
260void fxReportMemoryError(txParser* parser, txInteger line, txString theFormat, ...)
261{

Callers 15

_xsbug_module_Function · 0.85
_xsbug_script_Function · 0.85
mainFunction · 0.85
fxLoadScriptFunction · 0.85
fxGetNextKeywordFunction · 0.85
fxGetNextTokenAuxFunction · 0.85
fxGetNextTokenJSONFunction · 0.85
fxInitializeParserFunction · 0.85
fxPropertyNameFunction · 0.85
fxObjectBindingFunction · 0.85
fxJSXNameFunction · 0.85

Calls 2

fxNewParserChunkFunction · 0.85
fxNewParserStringFunction · 0.85

Tested by

no test coverage detected