GIRL词法


文件girl.l按照lex的规则定义了GIRL的词法。下面给出其内容及相应的解释(斜体字):
D    [0-9]
L    [A-Za-z]
B    [ \t\n]+
H    [A-Fa-f]
%%
module                  return  _MODULE_;
version                 return  _VERSION_;
import                  return  _IMPORT_;
type                    return  _TYPE_;
integer                 return  _INTEGER_;
float                   return  _FLOAT_;
string                  return  _STRING_;
color                   return  _COLOR_;
cursor                  return  _CURSOR_;
font                    return  _FONT_;
pixmap                  return  _PIXMAP_;
bmp                     return  _BMP_;
jpeg                    return  _JPEG_;
png                     return  _PNG_;
ppm                     return  _PPM_;
ps                      return  _PS_;
tiff                    return  _TIFF_;
xpm                     return  _XPM_;
widget                  return  _WIDGET_;
signal                  return  _SIGNAL_;
dataslot                return  _DATASLOT_;
receiver                return  _RECEIVER_;
table                   return  _TABLE_;
null                    return  _NULL_;

"$"{D}+                 return  TABLEITEM;

[+-]?{D}+\.{D}+         return  FLOAT;浮点数
[+-]?{D}+[Ee]{D}+       return  FLOAT;浮点数
[+-]?{D}+\.{D}+[Ee]{D}+ return  FLOAT;浮点数
[+-]?[1-9]{D}*          return  INTEGER;十进制整数
[+-]?0[0-7]*            return  INTEGER;八进制整数
[+-]?0[xX]({D}|{H})+    return  INTEGER;十六进制整数
\"([^\"]|\\\"|\"\")*\"  return  STRING;字符串
({L}|_)({L}|{D}|_)*     return  IDENTIFIER;标识符

"="                     return  EQUAL;
"."                     return  DOT;
","                     return  COMMA;
":"                     return  COLON;
";"                     return  SEMICOLON;
"<-"                    return  SENDSLOT;
"->"                    return  LINKSLOT;
"("                     return  LPAREN;
")"                     return  RPAREN;
"["                     return  LBRACKET;
"]"                     return  RBRACKET;
"{"                     return  LBRACE;
"}"                     return  RBRACE;

"#{"                    ;读出字符直到遇到"#}",并且读出的字符写入生成的头文件.i.h中。
"%{"                    ;读出字符直到遇到"%}",并且把读出的字符写入生成的C源文件.i.c中。
"%%{"                   ;读出字符直到遇到"%%}",并且把读出的字符写入生成的C++源文件.i.cpp中。

"//".*$			;忽略注解。
"/*"			;忽略注解,直到遇到"*/"。

{B}			;忽略空白。

返回首页
GIRL语法
与我联系