package org.erlide.ui.editors.erl.scanner; import org.eclipse.jface.text.rules.ICharacterScanner; import org.eclipse.jface.text.rules.IPredicateRule; import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.Token; public class ErlangCharRule implements IPredicateRule { private final IToken token; public ErlangCharRule(final IToken token) { this.token = token; } @Override public IToken evaluate(final ICharacterScanner scanner) { int c = scanner.read(); if (c == '$') { final EscapeRule escape = new EscapeRule(token); final IToken tk = escape.evaluate(scanner); if (tk == Token.UNDEFINED) { c = scanner.read(); } return token; } scanner.unread(); return Token.UNDEFINED; } @Override public IToken getSuccessToken() { return token; } @Override public IToken evaluate(final ICharacterScanner scanner, final boolean resume) { return evaluate(scanner); } }