【文件属性】:
文件名称:原创的c++版语法分析器
文件大小:5KB
文件格式:RAR
更新时间:2012-01-18 12:05:08
语法分析器
事例文法:
NOTHING INT FLOAT CHAR STRING sizeof struct ID * [ ] { } ( ) , . ->
main return break continue if else while = || && INTNUM FLOATNUM CHARNUM
!= == > >= < <= + - / % ! & ++ -- ;
%%
program
array
addop
args_list
args_list_declare
args_declare
args_declare_right
base_type
expr_list
expr
expr_right
expr0
expr0_right
expr1
expr1_right
expr2
expr2_right
expr3
expr3_right
expr4
expr4_right
expr5
expr5_right
expr6
expr6_right
expr7
expr7_right
expr8
expr8_right
function_list
function_declare
if_else
if_else_right
id_val
mulop
pointer
prefixop
postfixop
relop
refer_array_right
refer_right
real_args
refer_id
refer_id_right
simple_type
single_type
struct_type
stmt_list
stmt_block
stmt
single_stmt
struct_stmt
term
var_declare
while_loop
%%
program --> function_list main ( args_list ) { stmt_list } \
function_list --> function_declare function_list \
function_list --> NOTHING \
function_declare --> single_type ID ( args_list ) { stmt_list } \
args_list --> args_list_declare \
args_list --> NOTHING \
args_list_declare --> args_declare args_declare_right \
args_declare_right --> , args_declare args_declare_right \
args_declare_right --> NOTHING \
args_declare --> var_declare \
var_declare --> single_type ID array \
base_type --> INT \
base_type --> FLOAT \
base_type --> CHAR \
struct_type --> struct ID \
simple_type --> base_type \
simple_type --> struct_type \
single_type --> simple_type pointer \
pointer --> * pointer \
pointer --> NOTHING \
array --> [ INTNUM ] array \
array --> NOTHING \
stmt_block --> { stmt_list } \
stmt_block --> stmt \
stmt_list --> stmt stmt_list \
stmt_list --> NOTHING \
stmt --> single_stmt ; \
stmt --> struct_stmt \
single_stmt --> var_declare \
single_stmt --> expr_list \
single_stmt --> return expr_list \
single_stmt --> break \
single_stmt --> continue \
single_stmt --> NOTHING \
struct_stmt --> if_else \
struct_stmt --> while_loop \
if_else --> if ( expr_list ) stmt_block if_else_right \
if_else_right --> NOTHING \
if_else_right --> else stmt_block \
while_loop --> while ( expr_list ) stmt_block \
expr_list --> expr expr_right \
expr_right --> , expr expr_right \
expr_right --> NOTHING \
expr --> expr0 expr0_right \
expr0_right --> = expr0 expr0_right \
expr0_right --> NOTHING \
expr0 --> expr1 expr1_right \
expr1_right --> || expr1 expr1_right \
expr1_right --> NOTHING \
expr1 --> expr2 expr2_right \
expr2_right --> && expr2 expr2_right \
expr2_right --> NOTHING \
expr2 --> expr3 expr3_right \
expr3_right --> != expr3 expr3_right \
expr3_right --> NOTHING \
expr3 --> expr4 expr4_right \
expr4_right --> == expr4 expr4_right \
expr4_right --> NOTHING \
expr4 --> expr5 expr5_right \
expr5_right --> relop expr5 expr5_right \
expr5_right --> NOTHING \
expr5 --> expr6 expr6_right \
expr6_right --> addop expr6 expr6_right \
expr6_right --> NOTHING \
expr6 --> expr7 expr7_right \
expr7_right --> mulop expr7 expr7_right \
expr7_right --> NOTHING \
expr7 --> expr8 expr8_right \
expr7 --> prefixop expr8 \
expr8_right --> postfixop \
expr8_right --> NOTHING \
expr8 --> refer_id refer_right \
expr8 --> term \
refer_right --> . id_val refer_right \
refer_right --> -> id_val refer_right \
refer_right --> NOTHING \
term --> INTNUM \
term --> FLOATNUM \
term --> CHARNUM \
term --> STRING \
term --> ( expr ) \
term --> sizeof ( expr8 ) \
refer_id --> ID refer_id_right \
refer_id_right --> [ expr_list ] refer_array_right \
refer_id_right --> ( real_args ) \
refer_id_right --> NOTHING \
real_args --> expr_list \
real_args --> NOTHING \
id_val --> ID refer_array_right \
refer_array_right --> [ expr_list ] refer_array_right \
refer_array_right --> NOTHING \
relop --> < \
relop --> <= \
relop --> > \
relop --> >= \
addop --> + \
addop --> - \
mulop --> * \
mulop --> / \
mulop --> % \
prefixop --> ! \
prefixop --> - \
prefixop --> * \
prefixop --> & \
postfixop --> ++ \
postfixop --> -- \
%%
【文件预览】:
SYNTAX.H
main.c
STACK.H
ANALYSE_TABLE.H
GLOBAL.H
test.txt
SYN_LEX.H
网友评论
- 这个真的有太多错误了 改了半天才能用
- 同上,无法打开
- 能运行但打开文件错误