/* * Copyright (c) 2012 Sam Harwell, Tunnel Vision Laboratories LLC * All rights reserved. * * The source code of this document is proprietary work, and is not licensed for * distribution. For information about licensing, contact Sam Harwell at: * sam@tunnelvisionlabs.com */ package org.tvl.goworks.editor.go.parser; import org.antlr.netbeans.editor.text.DocumentSnapshot; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.TokenSource; import org.antlr.works.editor.antlr4.classification.AbstractTokensTaskTaggerSnapshot; import org.antlr.works.editor.antlr4.classification.SimpleLexerState; import org.antlr.works.editor.antlr4.highlighting.TokenSourceWithStateV4; import org.netbeans.api.annotations.common.NonNull; /** * * @author Sam Harwell */ class GoTokensTaskTaggerSnapshot extends AbstractTokensTaskTaggerSnapshot<SimpleLexerState> { public GoTokensTaskTaggerSnapshot(@NonNull DocumentSnapshot snapshot) { super(snapshot); } protected GoTokensTaskTaggerSnapshot(@NonNull GoTokensTaskTaggerSnapshot reference, @NonNull DocumentSnapshot snapshot) { super(reference, snapshot); } @Override protected SimpleLexerState getStartState() { return SimpleLexerState.INITIAL; } @Override protected TokenSourceWithStateV4<SimpleLexerState> createLexer(CharStream input, SimpleLexerState startState) { GoLexerWrapper lexer = new GoLexerWrapper(input); startState.apply(lexer); return lexer; } @Override protected TokenSource getEffectiveTokenSource(TokenSourceWithStateV4<SimpleLexerState> lexer) { return lexer; } @Override protected GoTokensTaskTaggerSnapshot translateToImpl(@NonNull DocumentSnapshot targetSnapshot) { return new GoTokensTaskTaggerSnapshot(this, targetSnapshot); } private static class GoLexerWrapper extends GoLexer implements TokenSourceWithStateV4<SimpleLexerState> { public GoLexerWrapper(CharStream input) { super(input); } @Override public SimpleLexerState getCurrentState() { return SimpleLexerState.createSimpleState(this); } @Override public void close() { } } }