package com.babel17.netbeans; import org.antlr.runtime.Token; import org.netbeans.spi.lexer.Lexer; import org.netbeans.spi.lexer.LexerRestartInfo; import org.netbeans.api.lexer.PartType; import com.babel17.antlr.babel17Lexer; public class Babel17Lexer implements Lexer<Babel17TokenId> { private LexerRestartInfo<Babel17TokenId> info; private babel17Lexer lexer; public Babel17Lexer(LexerRestartInfo<Babel17TokenId> info) { this.info = info; AntlrCharStream charStream = new AntlrCharStream(info.input(), "Babel17Editor"); lexer = new babel17Lexer(charStream); } public org.netbeans.api.lexer.Token<Babel17TokenId> nextToken() { Token token = lexer.nextToken(); if (token.getType() != babel17Lexer.EOF) { Babel17TokenId tokenId = Babel17LanguageHierarchy.getToken(token.getType()); return info.tokenFactory().createToken(tokenId); } else if (info.input().readLength() > 0) { // we have an incomplete token Babel17TokenId tokenId = Babel17LanguageHierarchy.getToken(babel17Lexer.COMMENT); return info.tokenFactory().createToken(tokenId, info.input().readLength(), PartType.MIDDLE); } return null; } public Object state() { return null; } public void release() {} }