1 package net.mograsim.plugin.asm.editor.rules;
3 import org.eclipse.core.runtime.Assert;
4 import org.eclipse.jface.text.rules.ICharacterScanner;
5 import org.eclipse.jface.text.rules.IRule;
6 import org.eclipse.jface.text.rules.IToken;
7 import org.eclipse.jface.text.rules.Token;
9 import net.mograsim.plugin.asm.AsmNumberUtil;
11 public class AsmNumberRule implements IRule
14 /** The token to be returned when this rule is successful */
15 protected IToken fToken;
18 * Creates a rule which will return the specified token when a numerical sequence is detected.
20 * @param token the token to be returned
22 public AsmNumberRule(IToken token)
24 Assert.isNotNull(token);
29 public IToken evaluate(ICharacterScanner scanner)
32 int c = scanner.read();
33 if (!AsmNumberUtil.isStart(c))
34 return abort(scanner, i);
35 StringBuilder sb = new StringBuilder();
36 sb.appendCodePoint(c);
41 if (AsmNumberUtil.isPart(c))
42 sb.appendCodePoint(c);
46 if (!AsmNumberUtil.isNumber(sb))
47 return abort(scanner, i);
52 private static IToken abort(ICharacterScanner scanner, int i)
54 for (int j = 0; j < i; j++)
56 return Token.UNDEFINED;