flex 处理c语言注释,flex词法分析状态使用有关问题

当前位置:我的异常网» C语言 » flex词法分析状态使用有关问题

flex词法分析状态使用有关问题

www.myexceptions.net  网友分享于:2013-11-09  浏览:10次

flex词法分析状态使用问题

%{

#include

#include "util.h"

#include "tokens.h"

#include "errormsg.h"

int charPos=1;

int yywrap(void)

{

charPos=1;

return 1;

}

void adjust(void)

{

EM_tokPos=charPos;

charPos+=yyleng;

}

%}

delim [ \t]

whitespace {delim}+

TraditionalComment ("/*"[^*]+"*/" | "/*""*"+"/")

LineTerminator ("\n"|"\r"|"\r\n"|"\n\r")

Comment "/*"([^\*]|(\*)*[^\*/])*(\*)*"*/"

DecIntergerLiteral ([0-9]+)

RealNum ([0-9]+"."[0-9]*) | ([0-9]*"."[0-9]+)

Identifier ([a-zA-Z_][a-zA-Z_0-9]*)

%s INITIAL1

%s STRING1

%%

{whitespace} {}

{Comment} {}

\" {adjust(); BEGIN(STRING1);}

"while" {adjust(); return WHILE;}

"for" {adjust(); return FOR;}

"to" {adjust(); return TO;}

"break" {adjust(); return BREAK;}

"let" {adjust(); return LET;}

"in" {adjust(); return IN;}

"end" {adjust(); return END;}

"function" {adjust(); return FUNCTION;}

"var" {adjust(); return VAR;}

"type" {adjust(); return TYPE;}

"array" {adjust(); return ARRAY;}

"if" {adjust(); return IF;}

"then" {adjust(); return THEN;}

"else" {adjust(); return ELSE;}

"do" {adjust(); return DO;}

"of" {adjust(); return OF;}

"nil" {adjust(); return NIL;}

"," {adjust(); return COMMA;}

":" {adjust(); return COLON;}

";" {adjust(); return SEMICOLON;}

"(" {adjust(); return LBRACK;}

")" {adjust(); return RBRACK;}

"[" {adjust(); return LPAREN;}

"]" {adjust(); return RPAREN;}

"{" {adjust(); return LBRACE;}

"}" {adjust(); return RBRACE;}

"." {adjust(); return DOT;}

"+" {adjust(); return PLUS;}

"-" {adjust(); return MINUS;}

"*" {adjust(); return TIMES;}

"/" {adjust(); return DIVIDE;}

"=" {adjust(); return EQ;}

"<>" {adjust(); return NEQ;}

"

"<=" {adjust(); return LE;}

">" {adjust(); return GT;}

">=" {adjust(); return GE;}

"&" {adjust(); return AND;}

"|" {adjust(); return OR;}

":=" {adjust(); return ASSIGN;}

{DecIntergerLiteral} {adjust(); yylval.ival=atoi(yytext); return INT;}

{Identifier} {adjust(); yylval.sval = String(yytext); return ID;}

{LineTerminator} {adjust(); EM_newline(); continue;}

\" {BEGIN(INITIAL1);adjust();yylval.sval = String(yytext);return STRING;}

[^\n\t\"\\]+ {yymore();}

\\t {yymore();}

\\n {yymore();}

\\\" {yymore();}

\\\\ {yymore();}

这个FLEX程序有什么错误啊

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值