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

📄 tiger.flex

📁 tiger run time supporting files
💻 FLEX
字号:
package tiger.parse;
import tiger.errormsg.ErrorMsg;
%% 

%cup
%char
%state COMMENT

%{

private void newline() {
  errorMsg.newline(yychar);
}

private void err(int pos, String s) {
	errorMsg.error(pos, s);
}

private void err(String s) {
	err(yychar, s);
}

private java_cup.runtime.Symbol tok(int kind, Object value) {    
	return new java_cup.runtime.Symbol(kind, yychar, yychar+yylength(), value);
}

public Yylex(java.io.InputStream s, ErrorMsg e) {
  this(s);
  errorMsg = e;
}

private ErrorMsg errorMsg;

%}

%eofval{
{ 
	return tok(sym.EOF, null);
}
%eofval}       

LineTerminator = \r|\n|\r\n
WhiteSpace = [ \t\f]


%%

<YYINITIAL> {
	{LineTerminator}	{ newline(); }
	{WhiteSpace}	{ /* do nothing */ }
	
	/* Token : Keywords */
	
	"if"  { return tok(sym.IF, null); }
	"for"  { return tok(sym.FOR, null); }
	// to do ....
	
	/* Token : Identifiers */
	
	/*
		{Identifier} { return tok(sym.ID, yytext()); }
	*/
	
	/* Token : Integer */
	
	// should we check very long integer in there?
	[0-9]+ { return tok(sym.INT, new Integer(yytext())); }
	
	// or not?
	[0-9]+ { return tok(sym.INT, new String(yytext())); }
	
	/* Token : String */
  	// to do...
  	
  	/* Token : SEPARATORS AND OPERATORS */
	
	","	{ return tok(sym.COMMA, null); }
	"."	{ return tok(sym.DOT, null); }
	"+"	{ return tok(sym.PLUS, null); }
	
	"/*" { yybegin(COMMENT); }
	
	[^] { return tok(sym.error, yytext()); }
}

<COMMENT> {
	[^] { /* nothing*/ }
}

⌨️ 快捷键说明

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