Beispiel #1
0
static Result Scanner_NextToken(Scanner* scanner)
{

  Result result;
  for (;;)
  {
    StrBuilder_Clear(&scanner->lexeme);
    scanner->token = TKEndMark;
    result = Scanner_NextTokenCore(scanner);
    if (result != RESULT_OK)
      break;

    if (scanner->bIgnoreBreakLine)
    {
      if (scanner->token == TKBreakLine)
      {
        continue;
      }
    }

    if (scanner->token == TKBlanks ||
        scanner->token  == TKLINECOMMENT ||
        scanner->token  == TKCOMMENT)
    {
      continue;
    }
    else
    {
      break;
    }
  }
  return result;
}
Beispiel #2
0
Result PlaygroundCLang_Match(PlaygroundCLang_Context* context,
                             PlaygroundCLang_Tokens tk)
{

    Result result = RESULT_FAIL;
    if (tk != context->token)
    {
      result = RESULT_FAIL;
    }
    else
    {
      StrBuilder_Clear(&context->lexeme);
      result = PlaygroundCLang_NextToken(context);
    }

    return result;
}
Result StrBuilder_Set(StrBuilder* p,
                      const char* source)
{
  StrBuilder_Clear(p);
  return StrBuilder_SetN(p, source, strlen(source));
}