0
의 불법 사용은 다음 .flex 파일이 I :JFLEX 오류 : 구문 오류 @ 기호 : ID (...) 오류 : 예약어
package mini_c;
import java_cup.runtime.*;
import static mini_c.sym.*;
%%
%class Lexer
%unicode /* The characters are unicode */
%cup /* Syntax analyser with cup (Parser part) */
%cupdebug /* ? */
%line /* Decompose by line */
%column /* Decompose by column */
// %yylexthrow Exception /* Can throw exceptions */
%{
/* No need for preamble in JAVA */
%}
WhiteSpace = [ \t\r\n]+
Integer = [:digit:]+ // Digit is defined on jflex
Identifier = ([:jletter:] | [_]) ([:jletter:] | [:digit:] | [_])* // Will be used to read function names
%%
<YYINITIAL> {
"(" { return new Symbol(LPAR, yyline, yycolumn); }
")" { return new Symbol(RPAR, yyline, yycolumn); }
"{"
{ return new Symbol(LB, yyline, yycolumn); }
"}" { return new Symbol(RB, yyline, yycolumn); }
";" { return new Symbol(SEMICOLON, yyline, yycolumn);}
"return"
{ return new Symbol(RETURN, yyline, yycolumn); }
{Integer}
{ return new Symbol(CST, yyline, yycolumn, Integer.parseInt(yytext())); }
{Identifier}
{ return new Symbol(IDENT, yyline, yycolumn, yytext()); }
. { throw new Exception(String.format("Error in line %d, column %d: illegal character '%s'\n", yyline, yycolumn, yytexy())); }
}
내가 (jflex Lexer.flex
쓰기 Lexer.flex 분명하다 파일의 이름) cmd를에 다음 표시 :
Reading "Lexer.flex"
Warning : Macro "WhiteSpace" has been declared but never used.
Constructing NFA : 31 states in NFA
Converting NFA to DFA :
................
18 states before minimization, 15 states in minimized DFA
Old file "Lexer.java" saved as "Lexer.java~"
Writing code to "Lexer.java"
Error: Syntax error @ Symbol: ID (unknown:4/15 - unknown:4/20)
Error : Illegal use of reserved word
Warning : Scanner at 6(1): Unrecognized character '%' -- ignored
Warning : Scanner at 6(2): Unrecognized character '%' -- ignored
Warning : Scanner at 8(1): Unrecognized character '%' -- ignored
Error: Syntax error @ Symbol: ID (unknown:8/2 - unknown:8/6)
Warning : Scanner at 9(1): Unrecognized character '%' -- ignored
Warning : Scanner at 10(1): Unrecognized character '%' -- ignored
Warning : Scanner at 11(1): Unrecognized character '%' -- ignored
Warning : Scanner at 12(1): Unrecognized character '%' -- ignored
Warning : Scanner at 13(1): Unrecognized character '%' -- ignored
Warning : Scanner at 16(1): Unrecognized character '%' -- ignored
Warning : Scanner at 16(2): Unrecognized character '{' -- ignored
Warning : Scanner at 18(1): Unrecognized character '%' -- ignored
Warning : Scanner at 18(2): Unrecognized character '}' -- ignored
Warning : Scanner at 20(12): Unrecognized character '=' -- ignored
Warning : Scanner at 20(16): Unrecognized character '\' -- ignored
cmd를 오류가 더 이상 사실입니다하지만 난 당신이 아이디어를 얻을 것 같아요.
"간단한 예제"섹션에서 http://jflex.de/manual.html#Example을 만들려고 할 때. 예제를 붙여 넣으면 다음 오류가 나타납니다.
Reading "Lexer.flex"
Error in file "Lexer.flex" (line 87):
This seems not to be a lexical specification (first %% is missing)
yytext()+">"); }
1 error, 0 warnings.
Warning : Scanner at 7(5): Unrecognized character '%' -- ignored
Warning : Scanner at 7(6): Unrecognized character '%' -- ignored
Warning : Scanner at 9(5): Unrecognized character '%' -- ignored
Error: Syntax error @ Symbol: ID (unknown:9/6 - unknown:9/10)
Warning : Scanner at 10(5): Unrecognized character '%' -- ignored
Warning : Scanner at 11(5): Unrecognized character '%' -- ignored
고마워요!
이었다 사실, 웹에서 많은의 예를 시도하고 그들은 모두 실패 . –