📄 mylex.l.txt
字号:
%{
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define Iden 300
#define IntNo 301
#define RealNo 302
/*Define keywords here:*/
#define Program 400
#define Begin 401
#define End 402
#define Var 403
#define Integer 404
#define Real 405
#define While 406
#define If 407
#define Else 408
/*Define double_character terminates: */
#define LE 500
#define GE 501
#define NE 502
#define ERRORCHAR 600
#define MAXSTR 20
/* This array is used for determin if a identier is keyword */
char str1[20]; /* this array is used to store the string of identifier or
integer/real number.When one of them are abtained in yytext,
copy it to str1. str1 will be used in YACC source file
(YSP file filename.y) */
int id_or_keyword(char *name);/* to check out if the name is a keyword*/
%}
letter [A-Za-z]
alnum [A-Za-z0-9]
d [0-9]
white [\t\n\040]
%start COMMENT
%%
/* the following rules are used for recognixe comment line*/
\{ {ECHO;BEGIN COMMENT;}
<COMMENT>\} {ECHO;BEGIN 0;}
<COMMENT>\n {ECHO;}
<COMMENT>[^\}]+ {ECHO;}
/* Define other recognize rules for all Vt symbols
and write corresponding sematic actions */
/* For example: */
[Bb][eE][Gg][iI][Nn] {ECHO;return Begin;}
[eE][Nn][Dd] {ECHO;return End;}
[Pp][Rr][oO][Gg][Rr][Aa][Mm] {ECHO;return Program;}
[Vv][Aa][Rr] {ECHO;return Var;}
[Ii][nN][Tt][eE][Gg][eE][Rr] {ECHO;return Integer;}
[Rr][eE][Aa][lL] {ECHO;return Real;}
[Ww][Hh][Ii][Ll][Ee] {ECHO;return While;}
[iI][Ff] {ECHO;return If;}
[Ee][Ll][Ss][Ee] {ECHO;return Else;}
({d}+(\.{d}*)?[Ee]([+-])?{d}+)|({d}*\.{d}+[Ee]([+-])?{d}+) {ECHO;strcpy(str1,yytext);return RealNo;}
{d}+\.{d}*|{d}*\.{d}+ {ECHO;strcpy(str1,yytext);return RealNo;}
{d}+ {ECHO;strcpy(str1,yytext);return IntNo;}
"(" {ECHO;return '(';}
")" {ECHO;return ')';}
"[" {ECHO;return '[';}
"]" {ECHO;return ']';}
">" {ECHO;return '>';}
"<" {ECHO;return '<';}
"=" {ECHO;return '=';}
"<=" {ECHO;return LE;}
">=" {ECHO;return GE;}
"!=" {ECHO;return NE;}
":" {ECHO;return ':';}
";" {ECHO;return ';';}
"\." {ECHO;return '.';}
"*" {ECHO;return '*';}
"+" {ECHO;return '+';}
"-" {ECHO;return '-';}
"/" {ECHO;return '/';}
"%" {ECHO;return '%';}
"," {ECHO;return ',';}
"&" {ECHO;return '&';}
"|" {ECHO;return '|';}
"!" {ECHO;return '!';}
{letter}{alnum}* { ECHO;strcpy(str1,yytext);return Iden;}
{white}+ {ECHO;}
. {printf("Invalid char %s\n",yytext);
return ERRORCHAR;
}
/* other Vt symbols ...... */
%%
#ifndef yywrap
int yywrap(){return 1;}
#endif
/* You can write other functions you need in LEX program below */
/* Good luck! */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -