←ïðåäûäóùàÿ ñëåäóþùàÿ→
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
|
|