Esempio n. 1
0
// Parses the given string and returns a network according to the network
// description language in networkbuilder.h
Network* NetworkBuilder::BuildFromString(const StaticShape& input_shape,
                                         char** str) {
  SkipWhitespace(str);
  char code_ch = **str;
  if (code_ch == '[') {
    return ParseSeries(input_shape, nullptr, str);
  }
  if (input_shape.depth() == 0) {
    // There must be an input at this point.
    return ParseInput(str);
  }
  switch (code_ch) {
    case '(':
      return ParseParallel(input_shape, str);
    case 'R':
      return ParseR(input_shape, str);
    case 'S':
      return ParseS(input_shape, str);
    case 'C':
      return ParseC(input_shape, str);
    case 'M':
      return ParseM(input_shape, str);
    case 'L':
      return ParseLSTM(input_shape, str);
    case 'F':
      return ParseFullyConnected(input_shape, str);
    case 'O':
      return ParseOutput(input_shape, str);
    default:
      tprintf("Invalid network spec:%s\n", *str);
      return nullptr;
  }
  return nullptr;
}
Esempio n. 2
0
void qCtx::ParseTrim(qStr *in, qStr *out)
{
    char c;
    while ( (c = in->GetC()) != EOF ) {
        if (!isspace(c))
            break;
        if (c == '\n') {
            c = in->GetC();
            break;
        }
    }
    if (c != EOF)
        ParseC(in, out, c);
    while ( (c = in->GetC()) != EOF ) {
        ParseC(in, out, c);
    }
}
Esempio n. 3
0
void qCtxComp::Parse(qStr *in, qStr *out)
{
	char c;
	while ( (c = in->GetC()) != EOF ) {
		ParseC(in, out, c);
	}
	OutFlush(out);
}
Esempio n. 4
0
static BOOL ParseCharMetrics(LPSTR buffer, INT len, OLD_AFMMETRICS *metrics)
{
    CHAR    *cp = buffer;

    *metrics = badmetrics;

    while (*cp != '\0')
    {
    	while (isspace(*cp))
	    ++cp;

	switch(*cp)
	{
	    case 'C':	if (ParseC(cp, metrics) == FALSE)
	    	    	    return FALSE;
	    	    	break;

	    case 'W':	if (ParseW(cp, metrics) == FALSE)
	    	    	    return FALSE;
	    	    	break;

	    case 'N':	if (ParseN(cp, metrics) == FALSE)
	    	    	    return FALSE;
	    	    	break;

	    case 'B':	if (ParseB(cp, metrics) == FALSE)
	    	    	    return FALSE;
	    	    	break;
	}

	cp = strchr(cp, ';');
	if (cp == NULL)
	{
	    WARN("No terminating semicolon\n");
	    break;
	}

	++cp;
    }

    if (metrics->C == INT_MAX || metrics->WX == FLT_MAX || metrics->N == NULL ||
    	    metrics->B.ury == FLT_MAX)
    {
    	*metrics = badmetrics;
	return TRUE;
    }

    return TRUE;
}
Esempio n. 5
0
void qCtx::Parse(qStr *in, qStr *out)
{
    if (GetLevel() > myEnv->GetMaxLevels()) {
        CStr s;
        while (!(s = in->GetS()).IsEmpty()) {
            out->PutS(s);
        }
        Throw(out, 99, "Maximum nesting level reached.");
    } else {
        char c;
        while ( (c = in->GetC()) != EOF ) {
            ParseC(in, out, c);
        }
    }
}