資源簡介
不知道怎么一次性上傳兩個文件 lex代碼 在另一個下載地址http://download.csdn.net/detail/leecoding/9534587
下載后修改文件后綴為.y 編譯后 運行時需要使用 < 文件名.txt 來導入文件流
(具體的文件流知識可以去搜索,如果不明白)
代碼片段和文件信息
%{
#include?
#include?
#include?
#include?
%}
%token?IDENTIFIER?NUM?CONST?VAR?PROCEDURE?B?END?ODD?IF?THEN?CALL?WHILE?DO?READ?WRITE?EQ?BE?SE
%left?‘+‘?‘-‘
%left?‘*‘?‘/‘
%%
program:part_program?‘.‘?{printf(“program?->?part_program\n“);}
;
part_program:constant_illstruction?var_instruction?process_instruction?statment{printf(“part_program?->?constant_illstruction+var_instruction+process_instruction\n“);}
??|constant_illstruction?var_instruction?statment{printf(“part_program?->?constant_illstruction+var_instruction\n“);}
??|constant_illstruction?statment{printf(“part_program?->?constant_illstruction\n“);}
??|constant_illstruction?process_instruction?statment{printf(“part_program?->?constant_illstruction+process_instruction\n“);}
??|var_instruction?process_instruction?statment{printf(“part_program?->?var_instruction+process_instruction\n“);}
??|var_instruction?statment{printf(“part_program?->?var_instruction\n“);}
??|process_instruction?statment{printf(“part_program?->?process_instruction\n“);}
??|statment{printf(“part_program?->?statment\n“);}
??;
constant_illstruction:?CONST?const_define?‘;‘?{printf(“constant_illstruction?->?const_define\n“);}
???|constant_illstruction?‘‘?const_define{printf(“constant_illstruction?->?constant_illstruction\n“);}
???;
const_define:IDENTIFIER?‘=‘?NUM?{printf(“const_define?->?IDENTIFIER\n“);}
;
var_instruction:VAR?var_mid?‘;‘{printf(“var_instruction?->?IDENTIFIER\n“);}
??????;
var_mid:IDENTIFIER{printf(“var_mid?->?IDENTIFIER\n“);}
|IDENTIFIER?‘‘?var_mid{printf(“var_mid?->?var_mid?\n“);}
;
process_instruction:process_head?part_program?‘;‘{printf(“process_instruction?->?process_head\n“);}
???|process_head?part_program?‘;‘?process_instruction?‘;‘?{printf(“process_instruction?->?process_head?+?process_instruction“);}
???;?
process_head:PROCEDURE?IDENTIFIER?‘;‘{printf(“process_head?->?PROCEDURE\n“);}
;
statment:assignment?{printf(“statment?->?assignment\n“);}
?|condition??{printf(“statment?->?condition\n“);}
?|circle?{printf(“statment?->?circle\n“);}
?|process_transfer?{printf(“statment?->?process_transfer\n“);}
?|read_statment?{printf(“statment?->?read_statment\n“);}
?|write_statment?{printf(“
評論
共有 條評論