⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmmlex.l

📁 简单C编译器生成的目标代码是8086的汇编代码(16位)
💻 L
字号:
%{
/****************************************************************************
cmmlex.l
ParserWizard generated Lex file.
Author: Jinde Wang
Date: 2006年6月26日
****************************************************************************/

#include "cmmyacc.h"
#include <stdlib.h>
#include <string.h>

/* 记录错误号 */
extern int nError;	
/* 当前Token名 */
extern char tokenString[256];
/* 当前行号 */
extern int lineno;

%}

digit [0-9]
number {digit}+
letter [a-zA-Z]
identifier {letter}+
newline \n
whitespace [ \t]+

%%
"/*" {           
	char c;
	int done = 0;
	do
	{
		while ((c=input()) != '*')
		{
			if (c == '\n')
			{
				lineno++;
			}
		};
		while ((c=input()) == '*');
		if (c == '/')
		{
			done = 1;
		}
	}
	while (!done);
}					
"+" {return PLUS;}
"-" {return MINUS;}
"*" {return MULT;}
"/" {return DIV;}
";" {return SEMI;}
"(" {return SLB;}
")" {return SRB;}
"{" {return BLB;}
"}" {return BRB;}
"=" {return ASSIGN;}
"main" {return MAIN;}
"return" {return RETURN;}
"int" {return INT;}
"void" {return VOID;}
"input" {return INPUT;}
"output" {return OUTPUT;}
{number} {
	strcpy(tokenString, yytext);	
	return NUM;
}
{identifier} {
	strcpy(tokenString, yytext);
	return ID;
}
{newline} {lineno++;}
{whitespace} {}
. {
	printf("ERROR %d: Line %d: Not identified characters.\n", ++nError, lineno);
	return ERROR;
}

%%

int yywrap()
{
	return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -