1 31 32 package org.antlr.works.ate.syntax.generic; 33 34 import org.antlr.works.ate.syntax.misc.ATELine; 35 import org.antlr.works.ate.syntax.misc.ATEToken; 36 37 import javax.swing.text.AttributeSet ; 38 import java.util.ArrayList ; 39 import java.util.List ; 40 41 public abstract class ATESyntaxEngine { 42 43 protected ATESyntaxEngineDelegate delegate; 44 45 protected ATESyntaxLexer lexer; 46 protected ATESyntaxParser parser; 47 48 protected List <ATEToken> tokens; 49 50 protected static int delay = 250; 51 52 public ATESyntaxEngine() { 53 lexer = createLexer(); 54 parser = createParser(); 55 } 56 57 public void setDelegate(ATESyntaxEngineDelegate delegate) { 58 this.delegate = delegate; 59 } 60 61 public static void setDelay(int delay) { 62 ATESyntaxEngine.delay = delay; 63 } 64 65 public synchronized List <ATEToken> getTokens() { 66 return tokens; 67 } 68 69 public synchronized List <ATELine> getLines() { 70 return lexer.getLines(); 71 } 72 73 public synchronized int getMaxLines() { 74 return lexer.getLineNumber(); 75 } 76 77 public ATESyntaxLexer getLexer() { 78 return lexer; 79 } 80 81 public ATESyntaxParser getParser() { 82 return parser; 83 } 84 85 protected synchronized void lexerDidRun(ATESyntaxLexer lexer) { 86 } 87 88 protected synchronized void parserDidRun(ATESyntaxParser parser) { 89 } 90 91 public abstract ATESyntaxLexer createLexer(); 92 public abstract ATESyntaxParser createParser(); 93 public abstract AttributeSet getAttributeForToken(ATEToken token); 94 95 public void refreshColoring() { 96 97 } 98 99 public void processSyntax() { 100 lexer.tokenize(delegate.getText()); 102 tokens = new ArrayList <ATEToken>(lexer.getTokens()); 103 lexerDidRun(lexer); 104 105 if(parser != null) { 107 parser.parse(tokens); 108 parserDidRun(parser); 109 } 110 } 111 112 public void process() { 113 delegate.ateEngineWillParse(); 114 processSyntax(); 115 delegate.ateEngineDidParse(); 116 } 117 118 } 119 | Popular Tags |