詞法分析器代碼
⑴ c語言詞法分析器!(需求代碼實現!) (1)單詞種別編碼要求 基本字、運算符、界符:一符一種 標識符:統
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define SPACE 0x20 //空格鍵
#define CHANGE 'c' //轉義字元
#define STRING 'S' //引號里的字元串
#define BOUNDARY 'B' //界符
#define OPERATION 'O' //運算符
#define WORD 'I' //標識符
#define KEY_WORD 'K' //關鍵字
#define DIGIT 'n' //數字,包括小數
#define DOTH 'd' //頭文件,「.h」文件
#define INT 't'
#define VOID 'v'
#define IF 'f'
#define ELSE 'e'
#define WHILE 'w'
#define FOR 'r'
#define MAIN 'm'
#define PRINTF 'p'
#define INCLUDE 'u'
#define FLOAT 'l'
#define KEYNUM 10
#define BOUNDNUM 8
#define OPERNUM 7
#define VALUENUM 100
/************************************************************************/
/* data type */
/************************************************************************/
struct bianliang
{
int id;
char name[20];
int value;
};
struct changliang
{
int data;
};
char KeyWord[KEYNUM][8]={"int","void","if","else","while","for","main","printf","include","float"};
char Boundary[BOUNDNUM]={'"',';',',','(',')','#','{','}'};
char Operation[OPERNUM]={'+','-','*','/','=','<','>'};
char Logogram[KEYNUM]={INT,VOID,IF,ELSE,WHILE,FOR,MAIN,PRINTF,INCLUDE,FLOAT};
char Value[VALUENUM][8];
int Value_n=0;
int ErrorLine=0;
int QuotationCount=0; //計算引號的數量
int QuotationFlag=0; //引號數量為奇數時為1,偶數時為0
char LastOpera=0; //用於判斷"=="號存前一個"="號
/************************************************************************/
/* function describe */
/************************************************************************/
int isKeyWord(char* s) //是關鍵字返回1,否則返回0
{
int i;
for (i=0;i<KEYNUM;i++)
{
if (strcmp(KeyWord[i],s)==0)
{
return i+1;
}
}
return 0;
}
int isBoundary(char ch) //是界符
{
int i;
for (i=0;i<BOUNDNUM;i++)
{
if (Boundary[i]==ch)
{
return i+1;
}
}
return 0;
}
int isOperation(char ch) //是運算符
{
int i;
for (i=0;i<OPERNUM;i++)
{
if (Operation[i]==ch)
{
return i+1;
}
}
return 0;
}
int isDigit(char *s) //是數字
{
int i,l=strlen(s);
for (i=0;i<l;i++)
{
if (!isdigit(s[i]))
{
break;
}
}
if (i>=l)
{
return 1;
}
else
{
if ('.'==s[i])
{
i++;
for (;i<l;i++)
{
if (!isdigit(s[i]))
{
break;
}
}
}
else
{
return 0;
}
if (i>=l)
return 1;
else
return 0;
}
}
int isDotH(char *s) //是頭文件
{
int i,l=strlen(s);
for (i=0;i<l;i++)
{
if (!isalpha(s[i]))
{
break;
}
}
if (i>=l)
{
return 0;
}
else
{
if ('.'==s[i])
{
i++;
if(s[i]=='h')
return 1;
else
return 0;
}
else
return 0;
}
}
int isWord(char *s) //是標識符
{
int i=0,l=strlen(s);
if (isalpha(s[i]))
{
i++;
for (;i<l;i++)
{
if (!isalnum(s[i]))
{
break;
}
}
}
if (i>=l)
{
return 1;
}
else
return 0;
}
void isWhat(int *i,char *str,FILE *fileOutput,FILE *fileOutput2) //判斷字元串,並把相應類型存入文件
{
int n;
struct bianliang temp;
struct changliang t;
FILE *file=fopen("num.txt","ab");
if(1!=*i)
{
str[--(*i)]='\0';
if(n=isKeyWord(str))
{
fputs(str,fileOutput);
fputc('\t',fileOutput);
fputc(KEY_WORD,fileOutput);
fputc('\t',fileOutput);
if(isKeyWord(str)>9)
fputc(isKeyWord(str)+'a'-10,fileOutput);
else
fputc(isKeyWord(str)+'0',fileOutput);
fputc('\t',fileOutput);
fputc(Logogram[n-1],fileOutput);
fputc('\n',fileOutput);
}
else if(isWord(str))
{
fputs(str,fileOutput);
fputc('\t',fileOutput);
fputc(WORD,fileOutput);
fputc('\t',fileOutput);
for(n=0;n<Value_n;n++)
{
if(0==strcmp(Value[n],str))
break;
}
if(n==Value_n)
{
n=++Value_n;
strcpy(Value[n-1],str);
temp.id=n-1;
strcpy(temp.name,str);
temp.value=0;
fwrite(&temp,sizeof(struct bianliang),1,fileOutput2);
fputc('0'+n,fileOutput);
}
else
{
fputc('0'+n+1,fileOutput);
}
fputc('\t',fileOutput);
fputc('i',fileOutput);
fputc('\n',fileOutput);
}
else if (isDotH(str))
{
fputs(str,fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc(DOTH,fileOutput);
fputc('\n',fileOutput);
}
else if (isDigit(str))
{
fputs(str,fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc(DIGIT,fileOutput);
fputc('\n',fileOutput);
t.data=atoi(str);
fwrite(&t,sizeof(struct changliang),1,file);
}
(*i)=0;
}
fclose(file);
}
void writeMessage(FILE *f)
{
fputs("字元\t類型\t附加值\t縮寫\n",f);
}
void error()
{
printf("%d line error!\n",ErrorLine);
exit(1);
}
/************************************************************************/
/* main */
/************************************************************************/
void main()
{
FILE*fileInput;
FILE*fileOutput;
FILE*fileOutput2;
char ch,qtemp;
char str[20];
int i;
int flag=0;
fileInput=fopen("1.cpp","r");
fileOutput=fopen("object.txt","w");
fileOutput2=fopen("variable.txt","w");
writeMessage(fileOutput);
if (NULL!=fileInput)
{
i=0;
do
{
ch=fgetc(fileInput);
str[i++]=ch;
if(isBoundary(ch))
{
if(1==isBoundary(ch))
{
QuotationCount++;
if (0==QuotationCount%2)
{
QuotationFlag=0;
}
else
QuotationFlag=1;
}
isWhat(&i,str,fileOutput,fileOutput2);
fputc(ch,fileOutput);
fputc('\t',fileOutput);
fputc('B',fileOutput);
fputc('\t',fileOutput);
if(isBoundary(ch)>9)
fputc(isBoundary(ch)+'a'-10,fileOutput);
else
fputc(isBoundary(ch)+'0',fileOutput);
fputc('\t',fileOutput);
fputc(Boundary[isBoundary(ch)-1],fileOutput);
fputc('\n',fileOutput);
i=0;
}
else if(isOperation(ch))
{
if(0==QuotationCount%2)
{
isWhat(&i,str,fileOutput,fileOutput2);
if ('='==ch)
{
qtemp=fgetc(fileInput);
if ('='==qtemp)
{
fputc('=',fileOutput);
fputc('=',fileOutput);
flag=1;
}
else
{
fputc('=',fileOutput);
fseek(fileInput,-1,SEEK_CUR);
flag=0;
}
}
else
fputc(ch,fileOutput);
fputc('\t',fileOutput);
fputc(OPERATION,fileOutput);
fputc('\t',fileOutput);
if(isOperation(ch)>9)
fputc(isOperation(ch)+'a'-10,fileOutput);
else
fputc(isOperation(ch)+'0',fileOutput);
fputc('\t',fileOutput);
if (flag)
{
fputc('q',fileOutput);
}
else
fputc(Operation[isOperation(ch)-1],fileOutput);
fputc('\n',fileOutput);
i=0;
}
else
{
fputc(ch,fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc('c',fileOutput);
fputc('\n',fileOutput);
i=0;
}
}
else if('\n'==ch)
{
isWhat(&i,str,fileOutput,fileOutput2);
ErrorLine++;
i=0;
}
else if(SPACE==ch||'\t'==ch)
{
if(1<i)
isWhat(&i,str,fileOutput,fileOutput2);
else
i=0;
}
else if ('\\'==ch)
{
if (1==QuotationFlag)
{
if (1!=i)
{
str[--i]='\0';
fputs(str,fileOutput);
fputc('\t',fileOutput);
fputc(STRING,fileOutput);
fputc('\n',fileOutput);
i=0;
}
ch=fgetc(fileInput);
if ('t'==ch)
{
fputc('\\',fileOutput);
fputc('t',fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc(CHANGE,fileOutput);
fputc('\n',fileOutput);
i=0;
}
else if('b'==ch)
{
fputc('\\',fileOutput);
fputc('b',fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc(CHANGE,fileOutput);
fputc('\n',fileOutput);
i=0;
}
else if ('n'==ch)
{
fputc('\\',fileOutput);
fputc('b',fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc('\t',fileOutput);
fputc(CHANGE,fileOutput);
fputc('\n',fileOutput);
i=0;
}
}
else error();
}
else if (1==QuotationFlag)
{
continue;
}
else if (isalnum(ch)||ch=='.')
{
}
else if (EOF!=ch)
{
error();
}
}while(EOF!=ch);
printf("詞法分析完畢\n");
fclose(fileInput);
}
fclose(fileOutput);
fclose(fileOutput2);
}
/****************************************************/
/* 1.cpp 例子文件*/
#include <stdio.h>
void main ( )
{
int i;
int j;
int m;
m=1;
for(i=0;i<5;i=i+1)
{
printf("\t",i);
for(j=0;j<i;j=j+1)
{
printf("\b",i);
}
for(j=0;j<m;j=j+1)
{
printf("*",i);
}
printf("\n",i);
m=m+2;
}
}
⑵ 簡易C語言詞法分析器的設計與實現。求源代碼
這個是編譯原理的復課程設計吧制, 做詞法分析這個題目算是最簡單的了
只需輸入合法詞的正則表達式,就可以輸出一個確定有限狀態自動機(DFA),而DFA的表現形式,往往是一張分析表。
有了詞法分析器的自動生成器,則可以避免繁瑣的單詞識別程序,直接對照分析表即可得出yes or no,
⑶ C語言代碼詞法分析器
這個賊難寫
⑷ 求詞法分析器java語言實現的代碼,求解
/*
*詞法分析
*
*/
importjava.io.File;
importjava.io.FileReader;
publicclassCompiler{
privatestaticStringstring;
privatestaticStringstr;
privatestaticcharch;
/*
*讀取文件
*/
publicstaticvoidgetChar()throwsException{
Filef=newFile("C:\","test.txt");
if(!f.exists()){
System.out.println("文件不存在,請輸入正確的文件路徑");
}
FileReaderfr=newFileReader(f);
intrs=0;
char[]data=newchar[256];
System.out.print("");
while((rs=fr.read(data))>0){
string=newString(data,0,rs).trim();
}
}
/*
*判斷讀入的字元是否為字母
*/
publicstaticbooleanisLetter(charc){
if((ch>='a'&&ch<='z')||(ch>+'A'&&ch<='Z')){
returntrue;
}
else
returnfalse;
}
/*
*判斷讀入的字元是否為數字
*/
publicstaticbooleanisDigit(charc){
if(ch>='0'&&ch<='9'){
returntrue;
}
else
returnfalse;
}
/*
*判斷是否為關鍵字
*/
publicstaticbooleanisKey(Stringstring){
if(string.equals("void")||string.equals("if")||string.equals("for")||string.equals("while")
||string.equals("do")||string.equals("return")||string.equals("break")
||string.equals("main"))
{
returntrue;
}
elsereturnfalse;
}
/*
*判斷輸入的字元並輸出單詞符號
*/
publicstaticvoidjudgement()throwsException{
Compiler.getChar();
intm=0;
string+='';
for(inti=0;i<string.length();i++){
switch(m)
{
case0:
ch=string.charAt(i);
if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='='
||ch=='>'||ch=='<')
{
m=4;
}
elseif(ch==','||ch==';'||ch=='{'||ch=='}'||ch=='('||ch==')')
{
m=5;
}
elseif(isDigit((ch=string.charAt(i))))
{
str="";
str+=ch;
m=3;
}
elseif(isLetter(ch=string.charAt(i)))
{
str="";
str+=ch;
m=2;
}else{}
break;
case4:
i--;
System.out.println(("(4"+"「"+ch+"」)"));
m=0;
break;
case5:
i--;
System.out.println(("(5"+"「"+ch+"」)"));
m=0;
break;
case2:
if(isLetter(ch=string.charAt(i)))
{
str+=ch;
}
else
{
if(isKey(str))
{
System.out.println("(1"+"「"+str+"」)");
}else{
System.out.println(("(2"+"「"+str+"」)"));
}
i--;
m=0;
}
break;
case3:
if(isDigit((ch=string.charAt(i))))
{
str+=ch;
}
else
{
System.out.println(("(3"+"「"+str+"」)"));
i--;
m=0;
}
break;
}
}
}
publicstaticvoidmain(String[]args)throwsException{
Compiler.judgement();
// System.out.print(b)
}
}
⑸ 修改詞法分析器代碼
把你改了好幾處細小的地方。。你自己看看是否已經滿足你的需求
#include"stdio.h"
#include"string.h"
#include"ctype.h"
#include"stdlib.h"
char prog[100],token[10],ch;
int syn,p,m,n,sum;
char *rwtab[9]={"int","void","main","if","then","while","do","continue","break"};
void scaner();
main()
{
p=0;
printf(" please input a string (end with '#'): \n");
scanf("%c",&ch);
while(ch!='#')
{
prog[p++]=ch;
scanf("%c",&ch);
}
p=0;
do
{
scaner();
switch(syn)
{
case 3:printf("( %d %13d )\n",syn,sum);
break;
case -1:printf("you have input a wrong string\n");
getchar();
exit(0);
default: printf("( %d %s )\n",syn,token);
break;
}
}while(prog[p]!=0);
}
void scaner()
{
sum=0;
for(m=0;m<10;m++)
token[m]=0;
ch=prog[p];
m=0;
while((ch==' ')||(ch=='\n'))
{
ch=prog[++p];
syn=-1;
}
if(isalpha(ch))
{
while(isalpha(ch))
{
token[m++]=ch;
ch=prog[++p];
}
syn=2;
for(n=0;n<9;n++)
if(strcmp(token,rwtab[n])==0)
{
syn=1;
break;
}
}
else if(isdigit(ch))
{
while(isdigit(ch))
{
sum=sum*10+ch-'0';
ch=prog[++p];
}
syn=3;
}
else switch(ch)
{
case '+': syn=4;
token[m++]=ch;
p++;
token[m++]='\0';
break;
case '\"': syn=5;
token[m++]=ch;
p++;
token[m++]='\0';
break;
}
}
⑹ 速求編譯原理詞法分析器,要求說明語言有完整代碼能運行。急!!!
不好意思 發成語法的了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <malloc.h>
#include <conio.h>
#define NULL 0
#define true1 1
#define false1 0
FILE *fp;
char ch;
char *keyword[17]={"break","char","continue","do","double",
"else","extern","float","for","if","int","long",
"short","static","switch","void","while"};
char *operatornum[3]={"+","-","*"};
char *comparison[6]={"<","<=","=",">",">=","<>"};
char *interpunction[5]={",",";",":=","(",")"};
char *biaoshifu[6]={"%","$","^","&","_","#"};//
char *zhushifu[3]={"//","/*","*/"};//
char *luoji[3]={"&&","||","!"};//
char search(char searchstr[],int wordtype) {
int i; switch (wordtype) {
case 1:for(i=0;i<=16;i++) {
if(strcmp(keyword[i],searchstr)==0)
return(true1);
} case 2:{
for(i=0;i<=2;i++)
{
if(strcmp(operatornum[i],searchstr)==0)
return(true1);
} break;
} case 3: {
for(i=0;i<=5;i++)
{
if(strcmp(comparison[i],searchstr)==0)
return(true1);
}
break;
}
case 4: for(i=0;i<=4;i++)
{
if(strcmp(interpunction[i],searchstr)==0)
return(true1); }
break; case 5: for(i=0;i<=5;i++)
{
if(strcmp(biaoshifu[i],searchstr)==0)
return(true1);
}break; case 6: for(i=0;i<=2;i++)
{
if(strcmp(zhushifu[i],searchstr)==0)
return(true1);
}break; case 7: for(i=0;i<=2;i++)
{ if(strcmp(luoji[i],searchstr)==0)
return(true1);
}break; }
return(false1);
}
char letterprocess (char ch)
{
int i=-1; char letter[20];
while (isalnum(ch)!=0) {
letter[++i]=ch;
ch=fgetc(fp);
};
letter[i+1]='\0';
if (search(letter,1))
{ if(strcmp(letter,"main"))//
printf("<1,關鍵字,%s>\n",letter);//
else printf("<2,自定義標識符,%s>\n",letter);//
} else { printf("<2,自定義標識符,%s>\n",letter);//
} return(ch); }
char numberprocess(char ch)//
{ int i=-1; char num[20];
while (isdigit(ch)!=0) {
num[++i]=ch;
ch=fgetc(fp); }
if(isalpha(ch)!=0) {
while(isspace(ch)==0)
{
num[++i]=ch;
ch=fgetc(fp);
} num[i+1]='\0';
printf("3,數字,%s\n",num);
goto u; }
num[i+1]='\0'; printf("<3,數字,%s>\n",num);//
u: return(ch); }
char otherprocess(char ch) {
int i=-1;
char other[20];
if (isspace(ch)!=0)
{
ch=fgetc(fp);
goto u; }
while ((isspace(ch)==0)&&(isalnum(ch)==0)) {
other[++i]=ch;
ch=fgetc(fp); }
other[i+1]='\0';
if (search(other,2))
printf("<4,運算符,%s>\n",other);//
else if (search(other,3))
printf("<4,運算符,%s>\n",other);//
else if (search(other,4)) printf("<5,分隔符號,%s>\n",other);//
else if (search(other,5)) printf("<%s,特殊標識符號>\n",other);
else if (search(other,6)) printf("<%s,注釋符號>\n",other);
else if (search(other,7)) printf("<%s,邏輯運算符號>\n",other);
else
printf("錯誤! 非法字元:%s\n",other);
u: return (ch); }
void main () {
char str,c; printf("**********************************詞法分析器***********************************\n");
if((fp=fopen("源程序.txt","r"))==NULL)
printf("源程序無法打開!\n");
else { str =fgetc(fp);
while (str!=EOF) {
if (isalpha(str)!=0)
str=letterprocess(str);
else {
if (isdigit(str)!=0)
str=numberprocess(str);
else
str=otherprocess(str);
}
};
printf("詞法分析結束,謝謝使用!\n");
printf("點任意鍵退出\n");
}
c=getch();
}
這個
⑺ 急求編譯原理詞法分析器代碼 C++做的
大姐,這個可不是你給10分能做得來的
⑻ 求一個C語言詞法分析器源代碼。要求:輸入一個.c的源程序,輸出該程序中所有變數。
首先做一個字元串數組
char *keyword[] 裡面放入所有數據類型關鍵字,int,double什麼的。
然後一行一行處理,版找裡面的關鍵字,找到以權後順序往後找,將空格,逗號,等號作為間隔符。將分號作為結束標志。
等號後面到下一個逗號或者分號之間的都忽略掉,如果有括弧(大中小),到下一個括弧之間的都忽略掉。
如果是long,unsigned,繼續分析後面是不是int。
基本就ok了。你要我幫你寫源碼的話,沒那時間。
⑼ ab(a|b)*ba 編寫一個詞法分析器程序 要代碼 在線等 詞法
a|b cleab|lyig | jghkj woaini +suoujb_dftgf ++--///VH fg
⑽ 求編譯原理的詞法分析器源碼
/* 我上編譯原理課時的第一次作業就是這個,flex源碼. */
%{
#include<math.h>
int num_lines=0;
%}
DIGIT [0-9]
ID [a-zA-Z_][a-zA-Z0-9]*
%%
"#include" {
printf("<包含頭文件,請手動合並文件\\>\n");
fprintf(yyout,"<包含頭文件,請手動合並文件\\>\n");
}
{DIGIT}+ {
printf("(3整數, \"%s\")\n", yytext);
fprintf(yyout,"(3整數, \"%s\")\n", yytext);
}
{DIGIT}+"."{DIGIT}* {
printf("(3浮點數, \" %s\")\n",yytext);
fprintf(yyout,"(3浮點數, \" %s\")\n",yytext);
}
auto |
break |
case |
char |
const |
continue |
default |
do |
double |
else |
enum |
extern |
float |
for |
goto |
if |
int |
long |
register |
return |
short |
signed |
sizeof |
static |
struct |
switch |
typedef |
union |
unsigned |
void |
volatile |
while {
fprintf(yyout,"(1, \"%s\")\n",yytext);
fprintf(yyout,"(1, \"%s\")\n",yytext);
}
{ID} {
printf("(2, \"%s\")\n",yytext);
fprintf(yyout,"(2, \"%s\")\n",yytext);
}
"+" |
"++" |
"+=" |
"-" |
"--" |
"-=" |
"->" |
"*" |
"**" |
"*=" |
"/" |
"/=" |
"=" |
"==" |
">" |
">>" |
">=" |
">>=" |
"<" |
"<<" |
"<=" |
"<<=" |
"!" |
"!=" |
"%" |
"%=" |
"&" |
"&&" |
"&=" |
"|" |
"||" |
"|=" |
"^" |
"^=" {
printf("(4, \"%s\")\n",yytext);
fprintf(yyout,"(4, \"%s\")\n",yytext);
}
"{" |
"}" |
"(" |
")" |
";" |
"," |
"'" |
"\"" |
"." |
"?" |
"[" |
"]" |
"\\" |
":" {
printf("(5, \"%s\")\n",yytext);
fprintf(yyout,"(5, \"%s\")\n",yytext);
}
\n {
++num_lines;
}
"/*"[^(*/)\n]*"*/"
(" ")+
[\t]+
. {
printf("(不能識別字元, \"%s\")\n",yytext);
fprintf(yyout,"(不能識別字元, \"%s\")\n",yytext);
}
%%
main(argc,argv)
int argc;
char **argv;
{
++argv,--argc;
if(argc>0)
yyin=fopen(argv[0],"r");
else
yyin=stdin;
yyout=fopen("output.txt","w");
yylex();
fclose(yyout);
}
int yywrap()
{
return 1;
}
/* 附:我們第一次作業的要求。
實驗一:用高級語言編寫詞法分析器(用lex生成)一、實驗目的:編制一個識別C語言子集的詞法分析器。從輸入的源程序中,識別出各個具有獨立意義的記號,即基本保留字、標識符、常數、運算符、分隔符五大類。並依次輸出各個記號的內部編碼及記號符號自身值。(遇到錯誤時可顯示「Error」,然後跳過錯誤部分繼續顯示)二、實驗過程和指導:(一)准備:1.閱讀課本有關章節,明確語言的詞法,寫出基本保留字、標識符、常數、運算符、分隔符和程序例。2.初步編制好程序。3.准備好多組測試數據。(二)程序要求:程序輸入/輸出示例:如源程序為C語言。輸入如下一段:main(){ int a,b; a = 10; b = a + 20;}要求輸出如下:(2,」main」)(5,」(「)(5,」)「)(5,」{「)(1,」int」)(2,」a」)(5,」,」)(2,」b」)(5,」;」)(2,」a」)(4,」=」)(3,」10」)(5,」;」)(2,」b」)(4,」=」)(2,」a」)(4,」+」)(3,」20」)(5,」;」)(5,」)「}
要求(滿足以下要求可獲得70%該題的得分):識別保留字:if、int、for、while、do、return、break、continue其他的都識別為標識符;常數為無符號整形數;運算符包括:+、-、*、/、=、>、<、>=、<=、!=分隔符包括:,、;、{、}、(、)以上為參考,具體可自行增刪。 三、實驗檢查:1.程序:輸入:測試數據(以文件形式);輸出:二元組(以文件形式)。2.實驗報告:(1)功能描述:該程序具有什麼功能?(2)狀態轉換圖。(2)程序結構描述:函數調用格式、參數含義、返回值描述、函數功能;函數之間的調用關系圖、程序總體執行流程圖。(4)源程序代碼。(5)實驗過程記錄:出錯次數、出錯嚴重程度、解決辦法摘要。(6)實驗總結:你在編程過程中花時多少?多少時間在紙上設計?多少時間上機輸入和調試?多少時間在思考問題?遇到了哪些難題?你是怎麼克服的?你對你的程序的評價?你的收獲有哪些?
另可附加:關鍵字 有符號數 符號表填寫 行號記錄,等
*/