no message

This commit is contained in:
2024-10-08 23:57:57 +03:00
parent 91f73cbfa0
commit e5f4ee40aa
12 changed files with 31 additions and 63 deletions

View File

@@ -0,0 +1,46 @@
package _VisualDVM.Visual.Syntax;
import _VisualDVM.Visual.Syntax.TokenProvider;
import org.fife.ui.rsyntaxtextarea.AbstractTokenMaker;
import org.fife.ui.rsyntaxtextarea.Token;
import org.fife.ui.rsyntaxtextarea.TokenMap;
import javax.swing.text.Segment;
//объект создается 1 раз, при установке стиля редактора.
//НИ В КОЕМ СЛУЧАЕ НЕЛЬЗЯ ПЕРЕДАВАТЬ ПО ССЫЛКЕ методам ради рефакторинга
//все переменные должны быть сугубо локальными
//иначе возможны непредсказуемые последствия.
//Метод вызывается асинхронно, причем несколькими событиями)
public abstract class ProvidedTokenMaker extends AbstractTokenMaker {
public static void fillTokenMap(TokenMap map, int type, String... words) {
for (String word : words)
map.put(word, type);
}
//сохранить не забирая текущий символ.
public void SaveCurrent(TokenProvider provider) {
addToken(provider.text, provider.currentTokenStart,
provider.i - 1, provider.currentTokenType,
provider.newStartOffset + provider.currentTokenStart);
}
//сохранить забирая текущий символ
public void SaveCurrent_(TokenProvider provider) {
addToken(provider.text, provider.currentTokenStart,
provider.i, provider.currentTokenType,
provider.newStartOffset + provider.currentTokenStart);
}
public abstract void Body(TokenProvider provider);
public abstract void performFinish(TokenProvider provider);
public Token getTokenList(Segment text, int startTokenType, int startOffset) {
resetTokenList();
//структура для хранения индексов смещений, текущего состояния и т д.
TokenProvider provider = new TokenProvider(text, startTokenType, startOffset);
// provider.checkFortranWrap();
while (provider.canRead()) {
provider.readNext();
Body(provider);
provider.gotoNext();
}
performFinish(provider);
// Return the first token in our linked list.
return firstToken;
}
}