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

📄 mismatched_char_exception.sa

📁 Java写的词法/语法分析器。可生成JAVA语言或者是C++的词法和语法分析器。并可产生语法分析树和对该树进行遍历
💻 SA
字号:
(*   ANTLR Translator Generator  Project led by Terence Parr at http://www.jGuru.com  Software rights: http://www.antlr.org/RIGHTS.html   $Id: //depot/code/org.antlr/release/antlr-2.7.0/lib/sather/Antlr/mismatched_char_exception.sa#1 $*)class ANTLR_MISMATCHED_CHAR_EXCEPTION < $ANTLR_RECOGNITION_EXCEPTION is   include ANTLR_RECOGNITION_EXCEPTION 	 message -> super_message;      -- Types of tokens   const CHAR      : INT := 1; -- will CHAR confilict with class CHAR? hmm...   const NOT_CHAR  : INT := 2;   const RANGE     : INT := 3;   const NOT_RANGE : INT := 4;   const SET       : INT := 5;   const NOT_SET   : INT := 6;   -- One of the above   attr mismatch_type : INT;   -- For CHAR/NOT_CHAR and RANGE/NOT_RANGE   attr expecting : CHAR;   -- For RANGE/NOT_RANGE (expecting is lower bound of range)   attr upper : CHAR;   -- For SET/NOT_SET   attr set : CHAR_SET;   -- what was found on the input stream   attr found_char : CHAR;   -- who knows...they may want to ask scanner questions   attr scanner : $ANTLR_FILE_CURSOR;   -- Expected range / not range   create( c        : CHAR, 	  lower     : CHAR, 	  upper_    : CHAR, 	  match_not : BOOL, 	  scanner_  : $ANTLR_FILE_CURSOR ) : SAME is      res : SAME := #SAME("Mismatched char");      res.found_char := c;      res.expecting := lower;      res.upper := upper_;      -- get instantaneous values of file/line/column      res.line := scanner_.line;      res.file_name := scanner_.file_name;      res.column := scanner_.column;      res.scanner := scanner_;      if ( match_not ) then	 res.mismatch_type := NOT_RANGE;      else 	 res.mismatch_type := RANGE;      end;      return res;   end;   -- Expected char / not char   create ( c         : CHAR, 	   expecting_ : CHAR, 	   match_not  : BOOL, 	   scanner_   : $ANTLR_FILE_CURSOR ) : SAME is            res : SAME := #SAME("Mismatched char");      res.found_char := c;      res.expecting := expecting_;      -- get instantaneous values of file/line/column      res.line := scanner_.line;      res.file_name := scanner_.file_name;      res.column := scanner_.column;      res.scanner := scanner_;      if ( match_not ) then	 res.mismatch_type := NOT_CHAR;      else 	 res.mismatch_type := CHAR;      end;      return res;   end;      -- Expected CHAR_SET / not CHAR_SET   create ( c        : CHAR, 	   set_      : CHAR_SET, 	   match_not : BOOL, 	   scanner_  : $ANTLR_FILE_CURSOR ) : SAME is      res ::= #SAME("Mismatched char");      res.found_char := c;      res.set := set_;      -- get instantaneous values of file/line/column      res.line := scanner_.line;      res.file_name := scanner_.file_name;      res.column := scanner_.column;      res.scanner := scanner_;      if ( match_not ) then	 res.mismatch_type := NOT_SET;      else 	 res.mismatch_type := SET;      end;      return res;   end;   -- Returns the error message that happened on the line/col given.   -- Copied from str:STR.   message : STR is      sb : STR;      case ( mismatch_type )       when CHAR then	 sb := "expecting '" + expecting + "', found '" + found_char + "'";      when NOT_CHAR then	 sb := "expecting anything but '" + expecting + "'; got it anyway";      when RANGE then	 sb := "expecting token in range: '" + expecting + "'..'" + upper + "', found '" + found_char + "'";      when NOT_RANGE then	 sb := "expecting token NOT in range: " + expecting + "'..'" + upper + "', found '" + found_char + "'";      when SET, NOT_SET then	 sb := "expecting "; 	 if ( mismatch_type = NOT_SET ) then	    sb := sb + "NOT "; 	 end;	 sb := sb + "one of (";	 loop	    sb := sb + " '" + set.elt! + "'";	 end;	 sb := sb + "), found '" + found_char + "'";      else	 sb := sb + super_message;      end;            return sb;   end;end;

⌨️ 快捷键说明

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