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

📄 mylexer.cpp

📁 本工具提供一个词法分析器和语法分析器的集成开发环境
💻 CPP
字号:
/* MyTokenBuffer.c *//* Sample replacement for DLGLexer *//* Shows how to override DLG with your own lexer */#include <stdio.h>#include <ctype.h>#include <stdlib.h>#include <iostream.h>#include "config.h"					/* include token defs */#include "tokens.h"					/* include token defs */#include APARSER_H					/* include all the ANTLR yuck */#include "MyLexer.h"				/* define your lexer */typedef ANTLRCommonToken ANTLRToken;/* use a predefined Token class */void panic(char *s) {   cerr << s << '\n';   exit(5);}MyLexer::MyLexer(){	c = getchar();}/* Recognizes Tokens IDENTIFIER and NUMBER */ANTLRAbstractToken *MyLexer::getToken(){	/* we will return a pointer to this next guy */	ANTLRToken *resultToken = new ANTLRToken;	ANTLRChar TokenBuffer[100];						/* This routine will just crash if tokens become                           more than 99 chars; your code must of course						   gracefully recover/adapt */   int  index=0;   while ( c==' ' || c=='\n' ) c=getchar();   if (c==EOF) {resultToken->setType(Eof); return resultToken;}   if (isdigit(c)) {      /* Looks like we have ourselves a number token */      while (isdigit(c)) {         TokenBuffer[index++]=c;		 c = getchar();	  }      TokenBuffer[index]='\0';      resultToken->setType(NUMBER);      resultToken->setText(TokenBuffer);      return resultToken;   }   if (isalpha(c)) {      /* We have ourselves an IDENTIFIER token */      while (isalpha(c)) {         TokenBuffer[index++]=c;		 c = getchar();	  }      TokenBuffer[index]='\0';      resultToken->setType(IDENTIFIER);      resultToken->setText(TokenBuffer);      return resultToken;   }   else      panic("lexer error");   return NULL;}

⌨️ 快捷键说明

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