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

📄 dtd.lex

📁 OR Mapping工具
💻 LEX
字号:
package org.ephman.xml.dtd;import java_cup.runtime.*;import java.io.FileReader;import java.util.HashMap;%%%{  public void close () throws Exception {     if (fr != null)      fr.close (); // close file handle  }    FileReader fr = null;    Yylex (String fileName) throws java.io.IOException {	this ();	fr = new java.io.FileReader (fileName);	yy_reader = new java.io.BufferedReader(fr);    }%}%line%char%state COMMENT%state ELEMENT%state ATTLIST%state DOCTYPE%state XML%eofval{    return new Symbol(sym.EOF);%eofval}%public%cupALPHA=[A-Za-z_-]DIGIT=[0-9]DOT=[.]REGEX_SYMBOL=[?+*]SLASH_STAR="/*"QUOTE="\""XML_HEADER=[^?>]+NAME={ALPHA}({ALPHA}|{DIGIT})*NAME_SYMBOL={ALPHA}({ALPHA}|{DIGIT})*{REGEX_SYMBOL}?LBRACK_NAME="<"{ALPHA}({ALPHA}|{DIGIT})*LBRACK_SLASH_NAME="</"{ALPHA}({ALPHA}|{DIGIT})*NUMBER={DIGIT}*{DOT}?{DIGIT}+INTEGER={DIGIT}+NONNEWLINE_WHITE_SPACE_CHAR=[\ \t\b\012]WHITE_SPACE_CHAR=[\n\ \t\b\012]STRING_TEXT=(\\\"|[^\n<>\"]|\\{WHITE_SPACE_CHAR}+\\)*QUOTED_NAME={QUOTE}({STRING_TEXT}|[<>])*{QUOTE}TEXT=({STRING_TEXT})*%% <YYINITIAL> "/" { return (new Symbol(sym.SLASH,yyline, yychar)); }<YYINITIAL> "<!ELEMENT" { yybegin (ELEMENT); /*System.out.println ("Starting element");*/ return (new Symbol(sym.ELEMENT,yyline, yychar)); }<YYINITIAL> "<!ATTLIST" { yybegin (ATTLIST); /*System.out.println ("Starting attlist");*/ return (new Symbol(sym.ATTLIST,yyline, yychar)); }<YYINITIAL> "<!DOCTYPE" { yybegin (DOCTYPE); }<YYINITIAL> "<?xml" { yybegin (XML); }<XML> "?>" { yybegin (YYINITIAL); }<DOCTYPE, ELEMENT, ATTLIST> ">" { yybegin (YYINITIAL); return (new Symbol(sym.RBRACK,yyline, yychar)); }<XML, DOCTYPE> {XML_HEADER} { }<YYINITIAL, ELEMENT, ATTLIST> {NONNEWLINE_WHITE_SPACE_CHAR}+ { } \n { } \r { }<YYINITIAL> "<!--" { yybegin(COMMENT);  }<COMMENT> "-->" {     yybegin(YYINITIAL);}<COMMENT> . { /*System.out.println ("Un-Matched:'" + yytext ()+ "'");*/ }<ATTLIST, ELEMENT> "(" {    return (new Symbol(sym.LPAREN,yyline,yychar,yytext()));}<ATTLIST, ELEMENT> "|" {    return (new Symbol(sym.OR_BAR,yyline,yychar,yytext()));}<ATTLIST, ELEMENT> ")" {    return (new Symbol(sym.RPAREN,yyline,yychar,yytext()));}<ATTLIST, ELEMENT> "," {    return (new Symbol(sym.COMMA,yyline,yychar,yytext()));}<ATTLIST> "Syntax" {    return (new Symbol(sym.SYNTAX,yyline,yychar));}<ATTLIST> "CDATA" {    return (new Symbol(sym.CDATA,yyline,yychar));}<ATTLIST> "#FIXED" {    return (new Symbol(sym.FIXED,yyline,yychar));}<ATTLIST> {QUOTED_NAME} {    return (new Symbol(sym.QUOTED_NAME,yyline,yychar,yytext()));}<ELEMENT> "#PCDATA" {    return (new Symbol(sym.PCDATA,yyline,yychar));}<ELEMENT> "ANY" {    return (new Symbol(sym.ANY,yyline,yychar));}<ELEMENT> "EMPTY" {    return (new Symbol(sym.EMPTY,yyline,yychar));}<ATTLIST, ELEMENT> {NAME_SYMBOL} {  //  System.out.println ("returning name -> " + yytext ());    return (new Symbol(sym.NAME_SYMBOL,yyline,yychar,yytext()));}<ATTLIST, ELEMENT> {NAME} {  //  System.out.println ("Name==" + yytext ());    return (new Symbol(sym.NAME,yyline,yychar,yytext()));}<YYINITIAL> {TEXT} {  //	System.out.println ("Text==" + yytext ());    return (new Symbol(sym.TEXT,yyline,yychar,yytext()));}	 . {    System.out.println("Illegal character: <" + yytext() + ">");	}

⌨️ 快捷键说明

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