Ejemplo n.º 1
0
static void WriteApply(Cell *c)
{
  int k;
  char *name;
  for(k=0; c->tag==APPLY; k++,c=c->left) push(c->right);
  if(k == 2 
  && c->tag == FUNC 
  && (name = getfunction(c->value)->name) != NULL
  && !(isalpha(name[0]) || name[0] == '_'))
  {
    WriteC(pop(), True);
    WriteString(" ");
    WriteString(name);
    WriteString(" ");
    WriteC(pop(), True);
  }
  else
  {
    WriteC(c, True);
    for(; k>0; k--)
    {
      WriteString(" ");
      WriteC(pop(), True);
    }
  }
}
Ejemplo n.º 2
0
static void WriteList(Cell *c, bool parentheses)
{
  bool charlist = True;
  Cell *temp;
  for(temp=c; temp->tag==LIST; temp=temp->right)
    if(temp->left->tag != CHAR) charlist = False;
  if(temp->tag != NIL)
  {
    if(parentheses) WriteString("(");
    for(temp=c; temp->tag==LIST; temp=temp->right)
    {
      WriteC(temp->left, True);
      WriteString(":");
    }
    WriteC(temp, True);
    if(parentheses) WriteString(")");
  }
  else if(charlist)
  {
    WriteString("\"");
    for(temp=c; temp->tag==LIST; temp=temp->right)
      Write("%c", temp->left->value);
    WriteString("\"");
  }
  else
    WriteElems(c, LIST, "[", ", ", "]", False);
}
Ejemplo n.º 3
0
void CSource::Core(vector<CClassDetail *>& vecDetail)
{
    WriteCommit2Commit(vecDetail);
    Cout << "bool CConfig::Parse(const char* pszFile)\n{" << endl;
    Cout << "\tCXMLTree CXMLTreeIns;\n\tif(!CXMLTreeIns.Create(pszFile)) return false;\n" << endl;
    Cout << "\tCXMLNode* pCRoot = CXMLTreeIns.GetRoot();\n\tif(pCRoot == NULL) return false;\n" << endl;
    for (BT_AUTO(iterDetail, vecDetail.begin()); iterDetail != vecDetail.end(); ++iterDetail) {
        CClassDetail* pCDetail = *iterDetail;
        if (pCDetail->GetType() == "s") {
            if (!pCDetail->GetMember().empty()) {
                // C
                WriteC(pCDetail);
            } else {
                // string
                WriteString(pCDetail);
            }
        } else if (pCDetail->GetType() == "m") {
            if (!pCDetail->GetMember().empty()) {
                // vector<C>
                WriteVectorC(pCDetail);
            } else {
                // vector<string>
                WriteVectorString(pCDetail);
            }
        }
    }
    Cout << "\treturn true;\n}\n" << endl;
    Cout << "} // CFG_N" << endl;
}
Ejemplo n.º 4
0
void _ttywrch(int ch)
{
    char tempch = ch;
#ifdef USE_SERIAL_PORT
    sendchar( &tempch );
#else
    WriteC( &tempch );
#endif
}
Ejemplo n.º 5
0
static void WriteElems(Cell *c, TagType tag, char start[], char separator[], char stop[], bool parentheses)
{
  WriteString(start);
  for(; c->tag == tag; c=c->right)
  {
    WriteC(c->left, parentheses);
    if(c->right->tag == tag) WriteString(separator);
  }
  WriteString(stop);
}
Ejemplo n.º 6
0
int fputc(int ch, FILE *f)
{
    /* Place your implementation of fputc here     */
    /* e.g. write a character to a UART, or to the */
    /* debugger console with SWI WriteC            */

    char tempch = ch;
#ifdef USE_SERIAL_PORT
    extern void uputchar(char ch);
	uputchar(tempch); // output to UART
#else
    WriteC( &tempch );
#endif
    return ch;
}
Ejemplo n.º 7
0
TInt YModem::ReadPackets(TUint8*& aDest, TInt aLength)
	{
	TInt l=0;
	TInt r=KErrNone;
	while(l<aLength || iState==0)
		{
		TInt retries=0;
		for(retries=0; retries<KMaxRetries; retries++)
			{
			if (iState==0)
				iTimeout=2000000, WriteC(iInitChar);
			r=ReadPacket(iPacketBuf);
//			test.Printf(_L("%d\n"),r);
			if (r==KErrTimedOut)
				continue;
			if (r==KErrNone)
				r=CheckPacket(aDest);
			if (r==KErrEof || r==KErrSessionClosed)
				break;
			if (r==KErrNone || r==KErrAlreadyExists)
				{
				if (r==KErrNone)
					iState++;
				if (iState>1)
					aDest+=iBlockSize;		// don't store packet 0
				if (iInitChar==BIGC)
					WriteC(ACK);
				if (iState==1)
					WriteC(iInitChar);		// Send another 'C' after ACK
				if (r==KErrAlreadyExists)
					continue;
				break;
				}
			if (r==KErrAbort)
				break;
			if (iInitChar==BIGG)
				break;
			WriteC(NAK);
			}
		if (r==KErrNone)
			{
			if (iState>1)
				l+=iBlockSize;
			}
		else if (r==KErrSessionClosed)
			{
			if (iInitChar==BIGC)
				WriteC(ACK);
			break;
			}
		else if (r==KErrEof)
			{
			WriteC(ACK);					// acknowledge end
			break;
			}
		else if (r!=KErrAbort)
			{
			WriteC(CAN);
			WriteC(CAN);
			WriteC(CAN);
			WriteC(CAN);
			WriteC(CAN);
			break;
			}
		}
	return r;
	}
Ejemplo n.º 8
0
void WriteCell(Cell *c)
{
  WriteC(c, False);
}
Ejemplo n.º 9
0
static void WriteC(Cell *c, bool parentheses)
{
  int k;
  FuncDef *fun;

  if(c==NULL) return;
  switch(c->tag)
  {
    case APPLY:
      if(parentheses) WriteString("(");
      WriteApply(c);
      if(parentheses) WriteString(")");
      break;
    case ARG:
      if(c->value>0)
        Write("ARG(%d)", c->value);
      else
        Write("LOCAL(%d)", -c->value);
      break;
    case INT:
      Write("%ld", integer(c));
      break;
    case REAL:
      Write("%lg", real(c));
      break;
    case CHAR:
      Write("'%c'", c->value);
      break;
    case BOOLEAN:
      WriteString(c->value ? "True" : "False");
      break;
    case NULLTUPLE:
      WriteString("()");
      break;
    case LIST:
      WriteList(c, parentheses);
      break;
    case NIL:
      WriteString("Nil");
      break;
    case STRUCT:
      WriteElems(c, STRUCT, parentheses ? "(" : "", " ", parentheses ? ")" : "", True);
      break;
    case PAIR:
      WriteElems(c, PAIR, "(", ", ", ")", False);
      break;
    case RECORD:
      WriteElems(c, RECORD, "{", ", ", "}", False);
      break;
    case _IF:
      if(parentheses) WriteString("(");
      WriteString("_if ");
      WriteC(c->left, True);
      WriteString(" ");
      WriteC(c->right->left, True);
      WriteString(" ");
      WriteC(c->right->right, True);
      if(parentheses) WriteString(")");
      break;
    case MATCH:
      if(parentheses) WriteString("(");
      WriteString("_match ");
      WriteC(c->left, True);
      WriteString(" ");
      WriteC(c->right, True);
      if(parentheses) WriteString(")");
      break;
    case MATCHARG:
      if(parentheses) WriteString("(");
      for(;;)
      {
        WriteString("_match ");
        WriteC(c->left, True);
        WriteString(" ");
        if(c->value>0)
          Write("ARG(%d)", c->value);
        else
          Write("LOCAL(%d)", -c->value);
        c = c->right;
        if(c == NULL) break;
        WriteString(" /\\ ");
      }
      if(parentheses) WriteString(")");
      break;
    case MATCHTYPE:
      if(c->value == INT)
        WriteString("num");
      else if(c->value == BOOLEAN)
        WriteString("bool");
      else if(c->value == CHAR)
        WriteString("char");
      else
        WriteString("...");
      break;
    case ALIAS:
      if(parentheses) WriteString("(");
      WriteC(c->left, False);
      WriteString(" = ");
      WriteC(c->right, False);
      if(parentheses) WriteString(")");
      break;
    case UNDEFINED:
      WriteString("undefined");
      break;
    case GENERATOR:
      WriteString("[");
      WriteElems(c->left, LIST, "", ", ", "", False);
      WriteString(" | ");
      for(c=c->right; c->tag==GENERATOR; c=c->right)
      {
        if(c->left->right)
        {
          WriteElems(c->left->left, LIST, "", ", ", "", False);
          WriteString(" <- ");
          WriteElems(c->left->right, LIST, "", ", ", "", False);
        }
        else
          WriteC(c->left->left, False);
        if(c->right->tag==GENERATOR) WriteString("; ");
      }
      WriteString("]");
      break;
    case SYSFUNC1:
      fun = getfunction(c->value);
      if(parentheses) WriteString("(");
      WriteString(fun->name);
      WriteString(" ");
      WriteC(c->left, True);
      if(parentheses) WriteString(")");
      break;
    case SYSFUNC2:
      fun = getfunction(c->value);
      if(parentheses) WriteString("(");
      WriteC(c->left, True);
      WriteString(" ");
      WriteString(fun->name);
      WriteString(" ");
      WriteC(c->right, True);
      if(parentheses) WriteString(")");
      break;
    case APPLICATION:
      fun = getfunction(c->value);
      if(parentheses) WriteString("(");
      WriteString(fun->name);
      if(fun->argcount == 0)
        ;
      else if(fun->argcount == 1)
        push(c->right);
      else
      {
        for(k=fun->argcount; k>1; k--)
        {
          push(c->left);
          c = c->right;
        }
        push(c);
      }
      for(k=fun->argcount; k>0; k--)
      {
        WriteString(" ");
        WriteC(pop(), True);
      }
      if(parentheses) WriteString(")");
      break;
    case FUNC: case TYPE:
      WriteFunc(getfunction(c->value)->name);
      break;
    case ERROR:
      Write("error(%s)", getfunction(c->value)->name);
      break;
    case CONST:
      WriteString("(Const ");
      WriteC(c->left, False);
      WriteString(")");
      break;
    case STRICTDIRECTOR: case LAZYDIRECTOR:
      WriteDirector(c->value, c->tag);
      if(parentheses) WriteString("(");
      WriteC(c->left, True);
      if(parentheses) WriteString(")");
      break;
    case LETREC:
      if(parentheses) WriteString("(");
      WriteC(c->right, False);
      WriteString(" WHERE ");
      k = 0;
      for(c=c->left; c->tag==LIST; c=c->right)
      {
        Write("LOCAL(%d) = ", -(k--));
        WriteC(c->left, False);
        WriteString("; ");
      }
      WriteString("ENDWHERE");
      if(parentheses) WriteString(")");
      break;
    case LAMBDA:
      WriteC(c->left, False);
      WriteString(" -> ");
      WriteC(c->right, False);
      break;
    case LAMBDAS:
      WriteElems(c, LAMBDAS, "(", " | ", ")", False);
      break;
    case VARIABLE:
      WriteString(getfunction(c->left->value)->name);
      break;
    case SET1: case SET2:
      WriteString("[");
      WriteC(c->left->left, False);
      for(k=1; k<=c->value; k++) Write(" x%d", k);
      WriteString(" | (x1");
      for(k=2; k<=c->value; k++) Write(", x%d", k);
      WriteString(") <- ");
      WriteC(c->left->right->right, False);
      if(c->left->right->left)
      {
        WriteString("; ");
        WriteC(c->left->right->left, False);
        for(k=1; k<=c->value; k++) Write(" x%d", k);
      }
      WriteString("]");
      break;
    default:
      systemerror(7);
  }
}