分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程
/*
* Write a program to check a C program for rudimentary syntax errors like
* unmatched parentheses, brackets and braces. Don’t forget about quotes,
* both single and double, escape sequences, and comments.
*
* SyntaxChecker.c - by FreeMan
*/
#include <stdio.h>
#define MAXLINE 1024 /* Max input line size */
char line[MAXLINE]; /* Current input line */
int GetLine(void);
int main()
{
int len = 0;
int t = 0;
int brace = 0, bracket = 0, parenthesis = 0;
int singleQuote = 1, doubleQuote = 1;
while ((len = GetLine()) > 0)
{
t = 0;
while (t < len)
{
if (line[t] == '{')
{
brace++;
}
if (line[t] == '}')
{
brace--;
}
if (line[t] == '[')
{
bracket++;
}
if (line[t] == ']')
{
bracket--;
}
if (line[t] == '(')
{
parenthesis++;
}
if (line[t] == ')')
{
parenthesis--;
}
if (line[t] == '\'')
{
singleQuote *= -1;
}
if (line[t] == '"')
{
doubleQuote *= -1;
}
t++;
}
}
if (doubleQuote != 1)
{
printf("Mismatching double quote mark.\n");
}
if (singleQuote != 1)
{
printf("Mismatching single quote mark.\n");
}
if (parenthesis != 0)
{
printf("Mismatching parenthesis.\n");
}
if (bracket != 0)
{
printf("Mismatching bracket mark.\n");
}
if (brace != 0)
{
printf("Mismatching brace mark.\n");
}
if (brace == 0 && bracket == 0 && parenthesis == 0 && singleQuote == 1 && doubleQuote == 1)
{
printf("Syntax appears to be correct.\n");
}
return 0;
}
/* GetLine: Specialized version */
int GetLine(void)
{
int c, i;
extern char line[];
for (i = 0; i < MAXLINE - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
{
line[i] = c;
}
if (c == '\n')
{
line[i] = c;
++i;
}
line[i] = '\0';
return i;
}