Ïðèìåð: Ãëîáàëüíàÿ ñåòü INTERNET
ß èùó:
Íà ãëàâíóþ  |  Äîáàâèòü â èçáðàííîå  

Ãëàâíàÿ/

Ïðîãðàììèðîâàíèå, áàçû äàííûõ. /

Ïðåïðîöåññîð ÿçûêà ÑÈ

Äîêóìåíò 1 | Äîêóìåíò 2 | Äîêóìåíò 3 | Äîêóìåíò 4 | Äîêóìåíò 5 | Äîêóìåíò 6 | Äîêóìåíò 7 | Äîêóìåíò 8

←ïðåäûäóùàÿ  ñëåäóþùàÿ→
1 2 

#include <stdio.h>

#include <dos.h>

#include <ctype.h>

#include <string.h>

 

#define ERROR       0

#define IDENT       1

#define KEYWORD   2

#define BRACKETS  3

#define OTHER       4

#define BEGIN       '{'

#define END   '}'

#define COMMA       ','

#define SEMI        ';'

#define LB    '\n'

char val[100];

char comment[200];

int  pos=0;

int  undo;

int  backspace;

#define N_KW 8

char keywords[N_KW][20]={

   "for",

   "while",

   "do",

   "if",

   "switch",

   "else",

   "case",

   "default"};

  

// -----------------------------------------------------------------

void blockQuote (char *(&s),FILE *f)

{

   char c=fgetc(f);

   *(s++)=c, c=0;

   while (c!='\'' && c!='\"') {

      c=*(s++)=fgetc(f);

      if (c=='\\')

       c=*(s++)=fgetc(f);

   }

}

// -----------------------------------------------------------------

int getNext (FILE *f)

{

   char *s=val,c;

   int      buf=undo;

   static int symbol=0;

   static int startPos=1;

  

   c=fgetc(f);

   startPos=0;

   if (isalnum(c) || c=='_') {

      symbol=0;

      *(s++)=c;

      while ((isalnum(c) || c=='_' || c=='.') && !feof(f) && !isspace(c))

       c=*(s++)=fgetc(f);

      ungetc (c,f);

      *(--s)=0;

      for (int i=0;i<N_KW && strcmp(keywords[i],val);i++);

      if (i!=N_KW) *(s++)=' ';

      *s=0;

      if (i!=N_KW) return KEYWORD;

      return IDENT;

   }

   if (c=='\'' || c=='\"') {

      symbol=0;

      ungetc(c,f);

      blockQuote (s,f);

      *s=0;

      return IDENT;

   }

   if (c=='=' && E && !symbol)

   {

      *(s++)=' ';

      *(s++)=c;

      *(s++)=' ';

      *s=0;

      return OTHER;

   }

   *s=c, *(s+1)=0;

   symbol=1;

   return OTHER;

}

void outVal (FILE *f,int back=0)

{

   char *s=val;

   if (backspace && !back)

   if (!T) {

      fputc (9,f);

      pos+=F3;

   }

   else {

      for (int j=0;j<T;j++)

      {

       fputc (' ',f);

       pos++;

      }

   }

   backspace=0;

   while (*s) {

      fputc (*(s++),f);

      pos++;

   }

}

void outCR (FILE *f,int tab,int newLine=0)

{

   int limit=tab-1+newLine;

   // Out Comments

   if (*comment)

      outComment (f);

   if (!newLine) {

       fputc ('\n',f);

       pos=0;

   }

   for (int i=0;i<limit;i++)

   {

      if (!T) {

       fputc (9,f);

       pos+=F3;

      }

      else {

       for (int j=0;j<T;j++)  {

          fputc (' ',f);

          pos++;

       }

      }

   }

   if (tab && !newLine)

      backspace=1;

}

// -----------------------------------------------------------------

int format (FILE *f_in,FILE *f_out)

{

   int      tab=0,tab1=0,tab2=0,lb=0;

   int      lex;

   while (!feof(f_in))

←ïðåäûäóùàÿ  ñëåäóþùàÿ→
1 2 


Copyright © 2005—2007 «RefStore.Ru»