Advertisement
Guest User

Untitled

a guest
Sep 25th, 2010
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.75 KB | None | 0 0
  1. /**
  2. * JavaCC BBCode parser version 0.1
  3. */
  4.  
  5. options {
  6. STATIC = false;
  7. UNICODE_INPUT = false;
  8. DEBUG_TOKEN_MANAGER = false;
  9. DEBUG_PARSER = true;
  10. FORCE_LA_CHECK = true;
  11. IGNORE_CASE = false;
  12. }
  13.  
  14. PARSER_BEGIN(BBCodeParser)
  15. package com.kdeveloper.javaBBCode.parser;
  16.  
  17. import java.io.StringReader;
  18. import java.io.Reader;
  19.  
  20. public class BBCodeParser {
  21. String buffer = "";
  22.  
  23. public BBCodeParser(String text)
  24. {
  25. this((Reader)(new StringReader(text)));
  26. }
  27. }
  28.  
  29. PARSER_END(BBCodeParser)
  30.  
  31. String parse() :
  32. {}
  33. {
  34. body() <EOF>
  35. { return buffer; }
  36. }
  37.  
  38. void body() :
  39. {}
  40. {
  41. (content())*
  42. }
  43.  
  44. void text() :
  45. { Token value; }
  46. {
  47. value=<TEXT>
  48. { buffer += value.image; }
  49. }
  50.  
  51. void bold() :
  52. {}
  53. {
  54. { buffer += "<b>"; }
  55. <BOLDSTART>(content())*<BOLDEND>
  56. { buffer += "</b>"; }
  57. }
  58.  
  59. void italic() :
  60. {}
  61. {
  62. { buffer += "<i>"; }
  63. <ITALICSTART>(content())*<ITALICEND>
  64. { buffer += "</i>"; }
  65. }
  66.  
  67. void underline() :
  68. {}
  69. {
  70. { buffer += "<span style=\"text-decoration: underline;\">"; }
  71. <UNDERLINESTART>(content())*<UNDERLINEEND>
  72. { buffer += "</span>"; }
  73. }
  74.  
  75. void strikethrough() :
  76. {}
  77. {
  78. { buffer += "<s>"; }
  79. <STRIKETHROUGHSTART>(content())*<STRIKETHROUGHEND>
  80. { buffer += "</s>"; }
  81. }
  82.  
  83. void url() :
  84. {}
  85. {
  86. <URLSTART>uri()<URLEND>
  87. { buffer += "</a>"; }
  88. }
  89.  
  90. void url2() :
  91. {}
  92. {
  93. <URL2START>uri2()"]"(content())*<URLEND>
  94. { buffer += "</a>"; }
  95. }
  96.  
  97. void uri() :
  98. { Token uri; }
  99. {
  100. uri=<URI>
  101. { buffer += "<a href=\"" + uri.image + "\">";
  102. buffer += uri.image; }
  103. }
  104.  
  105. void uri2() :
  106. { Token uri; }
  107. {
  108. uri=<URI>
  109. { buffer += "<a href=\"" + uri.image + "\">"; }
  110. }
  111.  
  112. void img() :
  113. {}
  114. {
  115. <IMGSTART>imguri()<IMGEND>
  116. }
  117.  
  118. void imguri() :
  119. { Token uri; }
  120. {
  121. uri=<URI>
  122. { buffer += "<img src=\"" + uri.image + "\" />"; }
  123. }
  124.  
  125. void quote() :
  126. {}
  127. {
  128. { buffer += "<blockquote><p>"; }
  129. <QUOTESTART>(content())*<QUOTEEND>
  130. { buffer += "</p></blockquote>"; }
  131. }
  132.  
  133. void code() :
  134. {}
  135. {
  136. { buffer += "<pre>"; }
  137. <CODESTART>(content())*<CODEEND>
  138. { buffer += "</pre>"; }
  139. }
  140.  
  141. void color() :
  142. {}
  143. {
  144. <COLORSTART>colorname()"]"(text())*<COLOREND>
  145. { buffer += "</span>"; }
  146. }
  147.  
  148. void colorname():
  149. { Token color; }
  150. {
  151. color=<COLOR>
  152. { buffer += "<span style=\"color:" + color.image + "\">"; }
  153. }
  154.  
  155. void linebreak():
  156. {}
  157. {
  158. <BR>
  159. { buffer += "<br />"; }
  160. }
  161.  
  162. void endofline() :
  163. {}
  164. {
  165. <EOL>
  166. { buffer += "<br />"; }
  167. }
  168.  
  169. void content() :
  170. {}
  171. {
  172. (LOOKAHEAD(2)text()|tagchar()|italic()|bold()|underline()|strikethrough()|url()|url2()|img()|quote()|code()|color()|endofline()|linebreak())
  173. }
  174.  
  175.  
  176.  
  177. /* for getting the unmatched tags or wrong tags. */
  178. void tagchar() :
  179. { Token value; }
  180. {
  181. value=<TAGCHAR>
  182. { buffer += value.image; }
  183. }
  184.  
  185. TOKEN :
  186. {
  187. <BOLDSTART : "[b]" >
  188. |<BOLDEND : "[/b]" >
  189. |<ITALICSTART : "[i]" >
  190. |<ITALICEND : "[/i]" >
  191. |<UNDERLINESTART : "[u]" >
  192. |<UNDERLINEEND : "[/u]" >
  193. |<STRIKETHROUGHSTART : "[s]" >
  194. |<STRIKETHROUGHEND : "[/s]" >
  195. |<URLSTART : "[url]" >
  196. |<URLEND : "[/url]" >
  197. |<URL2START : "[url=" >
  198. |<IMGSTART : "[img]" >
  199. |<IMGEND : "[/img]" >
  200. |<QUOTESTART : "[quote]" >
  201. |<QUOTEEND : "[/quote]">
  202. |<CODESTART : "[code]" >
  203. |<CODEEND : "[/code]" >
  204. |<COLORSTART : "[color=" >
  205. |<COLOREND : "[/color]" >
  206. |<BR : "[br]" >
  207. |<COLOR : ("#"(<HEXDIGIT>){6}) >
  208. |<URI : "http"("s")?"://"(<LETTER>|<DIGIT>|<USCORE>|<MINUS>)+((<SLASH>|<DOT>)(<LETTER>|<DIGIT>|<USCORE>|<MINUS>|<TILDE>)+)*(<SLASH>)? >
  209. |<LETTER : ["a"-"z","A"-"Z"] >
  210. |<DIGIT : ["0"-"9"] >
  211. |<PUNCT : [".", ":", ",", ";", "\t", "!", "?", " "] >
  212. |<DOT : ["."] >
  213. |<USCORE : ["_"] >
  214. |<SLASH : ["/"] >
  215. |<MINUS : ["-"] >
  216. |<TILDE : ["~"] >
  217. |<OTHER : ["*", "'", "$", "|", "+", "(", ")", "{", "}", "/", "%", "_", "-", "\"", "#", "<", ">", "=", "&", "\\"] >
  218. |<CR : ["\r"] >
  219. |<LF : ["\n"] >
  220. |<EOL : (<CR> | <LF> | <CR><LF>) >
  221. |<HEXDIGIT : ["A"-"F", "a"-"f", "0"-"9"] >
  222. |<TEXT : (<LETTER>|<DIGIT>|<PUNCT>|<OTHER>)+ >
  223. |<TAGOPENCHAR : ["["] >
  224. |<TAGCLOSECHAR : ["]"] >
  225. |<TAGCHAR : (<TAGOPENCHAR> | <TAGCLOSECHAR>) >
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement