01: package org.netbeans.modules.lexer.demo.handcoded.link;
02:
03: import org.netbeans.api.lexer.Lexer;
04: import org.netbeans.api.lexer.TokenId;
05: import org.netbeans.spi.lexer.AbstractLanguage;
06:
07: public class LinkLanguage extends AbstractLanguage {
08:
09: /** Lazily initialized singleton instance of this language. */
10: private static LinkLanguage INSTANCE;
11:
12: /** @return singleton instance of this language. */
13: public static synchronized LinkLanguage get() {
14: if (INSTANCE == null)
15: INSTANCE = new LinkLanguage();
16:
17: return INSTANCE;
18: }
19:
20: public static final int TEXT_INT = 1;
21: public static final int HTTP_URI_INT = 2;
22: public static final int FTP_URI_INT = 3;
23: public static final int URI_INT = 4;
24:
25: public static final TokenId FTP_URI = new TokenId("ftp-uri",
26: FTP_URI_INT, new String[] { "uri" }); // FTP absolute URI
27: public static final TokenId HTTP_URI = new TokenId("http-uri",
28: HTTP_URI_INT, new String[] { "uri" }); // HTTP absolute URI
29: public static final TokenId TEXT = new TokenId("text", TEXT_INT); // Either whole line of text or a part of a line if a link is present on it
30: public static final TokenId URI = new TokenId("uri", URI_INT,
31: new String[] { "uri" }); // Other URI type
32:
33: LinkLanguage() {
34: }
35:
36: public Lexer createLexer() {
37: return new LinkLexer();
38: }
39:
40: }
|