完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx

上传人:b****1 文档编号:13506396 上传时间:2022-10-11 格式:DOCX 页数:12 大小:331.12KB
下载 相关 举报
完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx_第1页
第1页 / 共12页
完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx_第2页
第2页 / 共12页
完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx_第3页
第3页 / 共12页
完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx_第4页
第4页 / 共12页
完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx

《完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

完整word版实验四 编译 用Yacc工具构造语法分析器Word文档下载推荐.docx

stdlib.h>

#include"

myYacc.tab.h"

%}

delim[\t\n]

ws{delim}+

letter[A-Za-z]

digit[0-9]

%%

{ws}{}

"

if"

{printf("

IF"

);

return(IF);

}

else"

ELSE"

return(ELSE);

int"

INT"

return(BASIC);

float"

FLOAT"

break"

BREAK"

return(BREAK);

do"

DO"

return(DO);

while"

WHILE"

return(WHILE);

true"

TRUE"

return(TRUE);

index"

INDEX"

return(INDEX);

bool"

BOOL"

char"

CHAR"

real"

return(REAL);

false"

FLASE"

return(FALSE);

[a-zA-Z_][a-zA-Z0-9_]*{printf("

ID"

return(ID);

[+-]?

[0-9]+{printf("

NUM"

return(NUM);

[0-9]*[.][0-9]+{printf("

<

LT"

return('

'

="

LE"

return(LE);

="

='

=="

EQ"

return(EQ);

!

NE"

return(NE);

>

GT"

GE"

return(GE);

+"

+"

+'

-"

-"

-'

["

["

['

]"

]"

]'

{"

{'

}

}"

}'

("

('

)"

)'

;

"

'

&

return(AND);

||"

return(OR);

Myyacc.y

externintyylex();

externintyyerror();

%tokenNUM

%tokenID

%tokenIFWHILEDOBREAKREALTRUEFALSEBASICELSEINDEXGELENEEQANDOR

program:

block{printf("

program-->

block\n"

}

;

block:

'

declsstmts'

{printf("

block-->

{declsstmts}\n"

decls:

|declsdecl{printf("

decls-->

declsdecl\n"

decl:

typeID'

decl-->

typeid;

\n"

type:

type'

NUM'

type-->

type[num]\n"

|BASIC{printf("

basic\n"

stmts:

|stmtsstmt{printf("

stmts-->

stmtsstmt\n"

stmt:

matched_stmt{printf("

stmt-->

matched_stmt\n"

|open_stmt{printf("

open_stmt\n"

open_stmt:

IF'

booL'

stmt{printf("

open_stmt-->

if(bool)stmt\n"

|IF'

matched_stmtELSEopen_stmt{printf("

if(bool)matched_stmtelseopen_stmt\n"

matched_stmt:

matched_stmtELSEmatched_stmt{printf("

matched_stmt-->

if(bool)matched_stmtelsematched_stmt\n"

|other{printf("

other\n"

other:

loc'

loc=bool;

|WHILE'

while(bool)stmt\n"

|DOstmtWHILE'

dostmtwhile(bool);

|BREAK'

break;

|block{printf("

loc:

loc-->

loc[bool]\n"

|ID{printf("

id\n"

booL:

booLORjoin{printf("

bool-->

bool||join\n"

|join{printf("

join\n"

join:

joinANDequality{printf("

join-->

join&

equality\n"

|equality{printf("

equality:

equalityEQrel{printf("

equality-->

equality==rel\n"

|equalityNErel{printf("

equality!

=rel\n"

|rel{printf("

rel\n"

rel:

expr'

expr{printf("

rel-->

expr<

expr\n"

|exprLEexpr{printf("

=expr\n"

}

|exprGEexpr{printf("

expr>

|expr'

|expr{printf("

expr:

term{printf("

expr-->

expr+term\n"

expr-term\n"

|term{printf("

term\n"

term:

term'

*'

unary{printf("

term-->

term*unary\n"

|term'

/'

term/unary\n"

|unary{printf("

unary\n"

unary:

unary-->

|'

-unary\n"

|factor{printf("

factor\n"

factor:

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1