Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * JavaCC BBCode parser version 0.1
- */
- options {
- STATIC = false;
- UNICODE_INPUT = false;
- DEBUG_TOKEN_MANAGER = false;
- DEBUG_PARSER = true;
- FORCE_LA_CHECK = true;
- IGNORE_CASE = false;
- }
- PARSER_BEGIN(BBCodeParser)
- package com.kdeveloper.javaBBCode.parser;
- import java.io.StringReader;
- import java.io.Reader;
- public class BBCodeParser {
- String buffer = "";
- public BBCodeParser(String text)
- {
- this((Reader)(new StringReader(text)));
- }
- }
- PARSER_END(BBCodeParser)
- String parse() :
- {}
- {
- body() <EOF>
- { return buffer; }
- }
- void body() :
- {}
- {
- (content())*
- }
- void text() :
- { Token value; }
- {
- value=<TEXT>
- { buffer += value.image; }
- }
- void bold() :
- {}
- {
- { buffer += "<b>"; }
- <BOLDSTART>(content())*<BOLDEND>
- { buffer += "</b>"; }
- }
- void italic() :
- {}
- {
- { buffer += "<i>"; }
- <ITALICSTART>(content())*<ITALICEND>
- { buffer += "</i>"; }
- }
- void underline() :
- {}
- {
- { buffer += "<span style=\"text-decoration: underline;\">"; }
- <UNDERLINESTART>(content())*<UNDERLINEEND>
- { buffer += "</span>"; }
- }
- void strikethrough() :
- {}
- {
- { buffer += "<s>"; }
- <STRIKETHROUGHSTART>(content())*<STRIKETHROUGHEND>
- { buffer += "</s>"; }
- }
- void url() :
- {}
- {
- <URLSTART>uri()<URLEND>
- { buffer += "</a>"; }
- }
- void url2() :
- {}
- {
- <URL2START>uri2()"]"(content())*<URLEND>
- { buffer += "</a>"; }
- }
- void uri() :
- { Token uri; }
- {
- uri=<URI>
- { buffer += "<a href=\"" + uri.image + "\">";
- buffer += uri.image; }
- }
- void uri2() :
- { Token uri; }
- {
- uri=<URI>
- { buffer += "<a href=\"" + uri.image + "\">"; }
- }
- void img() :
- {}
- {
- <IMGSTART>imguri()<IMGEND>
- }
- void imguri() :
- { Token uri; }
- {
- uri=<URI>
- { buffer += "<img src=\"" + uri.image + "\" />"; }
- }
- void quote() :
- {}
- {
- { buffer += "<blockquote><p>"; }
- <QUOTESTART>(content())*<QUOTEEND>
- { buffer += "</p></blockquote>"; }
- }
- void code() :
- {}
- {
- { buffer += "<pre>"; }
- <CODESTART>(content())*<CODEEND>
- { buffer += "</pre>"; }
- }
- void color() :
- {}
- {
- <COLORSTART>colorname()"]"(text())*<COLOREND>
- { buffer += "</span>"; }
- }
- void colorname():
- { Token color; }
- {
- color=<COLOR>
- { buffer += "<span style=\"color:" + color.image + "\">"; }
- }
- void linebreak():
- {}
- {
- <BR>
- { buffer += "<br />"; }
- }
- void endofline() :
- {}
- {
- <EOL>
- { buffer += "<br />"; }
- }
- void content() :
- {}
- {
- (LOOKAHEAD(2)text()|tagchar()|italic()|bold()|underline()|strikethrough()|url()|url2()|img()|quote()|code()|color()|endofline()|linebreak())
- }
- /* for getting the unmatched tags or wrong tags. */
- void tagchar() :
- { Token value; }
- {
- value=<TAGCHAR>
- { buffer += value.image; }
- }
- TOKEN :
- {
- <BOLDSTART : "[b]" >
- |<BOLDEND : "[/b]" >
- |<ITALICSTART : "[i]" >
- |<ITALICEND : "[/i]" >
- |<UNDERLINESTART : "[u]" >
- |<UNDERLINEEND : "[/u]" >
- |<STRIKETHROUGHSTART : "[s]" >
- |<STRIKETHROUGHEND : "[/s]" >
- |<URLSTART : "[url]" >
- |<URLEND : "[/url]" >
- |<URL2START : "[url=" >
- |<IMGSTART : "[img]" >
- |<IMGEND : "[/img]" >
- |<QUOTESTART : "[quote]" >
- |<QUOTEEND : "[/quote]">
- |<CODESTART : "[code]" >
- |<CODEEND : "[/code]" >
- |<COLORSTART : "[color=" >
- |<COLOREND : "[/color]" >
- |<BR : "[br]" >
- |<COLOR : ("#"(<HEXDIGIT>){6}) >
- |<URI : "http"("s")?"://"(<LETTER>|<DIGIT>|<USCORE>|<MINUS>)+((<SLASH>|<DOT>)(<LETTER>|<DIGIT>|<USCORE>|<MINUS>|<TILDE>)+)*(<SLASH>)? >
- |<LETTER : ["a"-"z","A"-"Z"] >
- |<DIGIT : ["0"-"9"] >
- |<PUNCT : [".", ":", ",", ";", "\t", "!", "?", " "] >
- |<DOT : ["."] >
- |<USCORE : ["_"] >
- |<SLASH : ["/"] >
- |<MINUS : ["-"] >
- |<TILDE : ["~"] >
- |<OTHER : ["*", "'", "$", "|", "+", "(", ")", "{", "}", "/", "%", "_", "-", "\"", "#", "<", ">", "=", "&", "\\"] >
- |<CR : ["\r"] >
- |<LF : ["\n"] >
- |<EOL : (<CR> | <LF> | <CR><LF>) >
- |<HEXDIGIT : ["A"-"F", "a"-"f", "0"-"9"] >
- |<TEXT : (<LETTER>|<DIGIT>|<PUNCT>|<OTHER>)+ >
- |<TAGOPENCHAR : ["["] >
- |<TAGCLOSECHAR : ["]"] >
- |<TAGCHAR : (<TAGOPENCHAR> | <TAGCLOSECHAR>) >
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement