The final restructured version for automatic build using maven tycho
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / asm / editor / rules / AsmLabelRule.java
1 package net.mograsim.plugin.asm.editor.rules;
2
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;
8
9 public class AsmLabelRule implements IRule
10 {
11
12         /** The token to be returned when this rule is successful */
13         protected IToken fToken;
14
15         /**
16          * Creates a rule which will return the specified token when a numerical sequence is detected.
17          *
18          * @param token the token to be returned
19          */
20         public AsmLabelRule(IToken token)
21         {
22                 Assert.isNotNull(token);
23                 fToken = token;
24         }
25
26         @Override
27         public IToken evaluate(ICharacterScanner scanner)
28         {
29                 int c = scanner.read();
30                 int i = 1;
31                 if (Character.isJavaIdentifierStart(c))
32                 {
33                         do
34                         {
35                                 c = scanner.read();
36                                 i++;
37                         } while (Character.isJavaIdentifierPart(c));
38                         if (c == ':')
39                                 return fToken;
40                         return abort(scanner, i);
41                 }
42                 scanner.unread();
43                 return Token.UNDEFINED;
44         }
45
46         private static IToken abort(ICharacterScanner scanner, int i)
47         {
48                 for (int j = 0; j < i; j++)
49                         scanner.unread();
50                 return Token.UNDEFINED;
51         }
52 }