org.eclipse.jface.text.rules.ICharacterScanner#read ( )源码实例Demo

下面列出了org.eclipse.jface.text.rules.ICharacterScanner#read ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: goclipse   文件: GoScanner.java
@Override
public IToken evaluate(ICharacterScanner scanner) {
	int read = scanner.read();
	
	if(read == ICharacterScanner.EOF) {
		return Token.UNDEFINED;
	}
	
	switch (read) {
	case ':':
	case ';':
	case '.':
	case '(':
	case ')':
	case '[':
	case ']':
	case '{':
	case '}':
		return getSuccessToken();
	default:
		scanner.unread(); return Token.UNDEFINED;
	}
	
}
 
源代码2 项目: texlipse   文件: BibBraceRule.java
public IToken evaluate(ICharacterScanner scanner, boolean resume) {
    if (resume) {
        boolean inString = false;
        do {
            int c = scanner.read();
            if (((char) c) == ',' && !inString)
                break;
            else if (((char) c) == '@') {
                scanner.unread();
                return Token.UNDEFINED;
            } else if (((char) c) == '"' && !inString)
                inString = true;
            else if (((char) c) == '"' && inString)
                inString = false;
            else if (c == ICharacterScanner.EOF)
                return Token.UNDEFINED;
        } while (true);
    }
    return doEvaluate(scanner, 1);
}
 
private boolean readInterface(ICharacterScanner scanner) {
	int ch= scanner.read();
	int i= 0;
	while (i < INTERFACE.length() && INTERFACE.charAt(i) == ch) {
		i++;
		ch= scanner.read();
	}
	if (i < INTERFACE.length())
		return false;

	if (fWordDetector.isWordPart((char) ch))
		return false;

	if (ch != ICharacterScanner.EOF)
		scanner.unread();

	return true;
}
 
源代码4 项目: APICloud-Studio   文件: TagWordRule.java
@Override
public IToken evaluate(ICharacterScanner scanner)
{
	if (scanner.getColumn() > 0)
	{
		scanner.unread();
		int c = scanner.read();
		if (c == '<')
		{
			return super.evaluate(scanner);
		}
		else if ((c == '!' || c == '/') && scanner.getColumn() > 1)
		{
			scanner.unread();
			scanner.unread();
			c = scanner.read();
			scanner.read();
			if (c == '<')
			{
				return super.evaluate(scanner);
			}
		}
	}
	return Token.UNDEFINED;
}
 
源代码5 项目: goclipse   文件: PatternRule_Fixed.java
@Override
protected IToken doEvaluate(ICharacterScanner scanner, boolean resume) {
	if (resume) {

		if (endSequenceDetected(scanner))
			return fToken;

	} else {

		int c= scanner.read();
		if (c == fStartSequence[0]) {
			if (sequenceDetected(scanner, fStartSequence, false)) {
				if (endSequenceDetected(scanner))
					return fToken;
			}
		}
	}

	scanner.unread();
	return Token.UNDEFINED;
}
 
源代码6 项目: xds-ide   文件: ModulaCommentRule.java
/**
 * Evaluates Modula-2 comment rules. Resumes detection, i.e. look sonly for
 * the end comment required by this rule if the <code>resume</code> flag is set.
 *
 * @param scanner the character scanner to be used
 * @param resume <code>true</code> if detection should be resumed, <code>false</code> otherwise
 * @return the token resulting from this evaluation
 */
protected IToken doEvaluate(ICharacterScanner scanner, boolean resume) {
    if (! resume) {
        int c = scanner.read();
        if (c != '(') {
            scanner.unread();
            return Token.UNDEFINED;
        }
        c = scanner.read();
        if (c != '*') {
            scanner.unread();
            scanner.unread();
            return Token.UNDEFINED;
        }
    }
    endCommentDetected(scanner);
    return successToken;
}
 
源代码7 项目: gwt-eclipse-plugin   文件: JsniScanner.java
@Override
protected boolean endSequenceDetected(ICharacterScanner scanner) {
  int c = 0, readCount = 1;
  while ((c = scanner.read()) != ICharacterScanner.EOF) {
    if (!isValidJavaRefCharacter((char) c)) {
      scanner.unread();
      return true;
    }
    readCount++;
  }

  while (--readCount > 0) {
    scanner.unread();
  }

  return super.endSequenceDetected(scanner);
}
 
@Override
protected boolean sequenceDetected(ICharacterScanner scanner, char[] sequence, boolean eofAllowed)
{
	for (int i= 1; i < sequence.length; i++) {
		int c= scanner.read();
		if (c == ICharacterScanner.EOF && eofAllowed) {
			return true;
		} else if (Character.toLowerCase(c) != Character.toLowerCase(sequence[i])) {
			// Non-matching character detected, rewind the scanner back to the start.
			// Do not unread the first character.
			scanner.unread();
			for (int j= i-1; j > 0; j--)
				scanner.unread();
			return false;
		}
	}

	return true;
}
 
源代码9 项目: goclipse   文件: DefaultPredicateRule.java
public static boolean consume(char ch, ICharacterScanner scanner) {
	int next = scanner.read();
	if(next == ch) {
		return true;
	}
	scanner.unread();
	return false;
}
 
源代码10 项目: APICloud-Studio   文件: XMLAttributeRule.java
@Override
protected boolean wordOK(String word, ICharacterScanner scanner)
{
	char c = (char) scanner.read();
	
	// rewind since we're only performing lookahead
	scanner.unread();
	
	return c == '=';
}
 
源代码11 项目: APICloud-Studio   文件: SingleCharacterRule.java
public IToken evaluate(ICharacterScanner scanner, boolean resume)
{
	if (c == (char) scanner.read())
	{
		return getSuccessToken();
	}
	scanner.unread();
	return Token.UNDEFINED;
}
 
源代码12 项目: texlipse   文件: BibEntryScanner.java
public IToken evaluate(ICharacterScanner scanner) {
    int c = scanner.read();
    if (((char) c) == '=' || ((char) c) == '#' || ((char) c) == ','
        || ((char) c) == '{' || ((char) c) == '}') {
        return fToken;
    } else if (((char) c) == '\\') {
        c = scanner.read();
        if (((char) c) == '"')
            return fToken;
        scanner.unread();
    }
    scanner.unread();
    return Token.UNDEFINED;
}
 
源代码13 项目: tlaplus   文件: TLCSingleLineRule.java
@Override
protected boolean endSequenceDetected(ICharacterScanner scanner) {
	while(true) {
		scanner.read();
		if(TLCCharScanner.isEOF(scanner)) {
			break;
		} else if (TLCCharScanner.isEOL(scanner)) {
			// EOL has to be consumed
			scanner.read();
			break;
		}
	}
	return true;
}
 
源代码14 项目: APICloud-Studio   文件: BrokenStringRule.java
public IToken evaluate(ICharacterScanner scanner)
{
	int readCount = 1;
	int c;
	while ((c = scanner.read()) != ICharacterScanner.EOF)
	{
		if (c == '\'')
		{
			return singleQuoteToken;
		}
		else if (c == '"')
		{
			return doubleQuoteToken;
		}
		else if (c == '=')
		{
			break;
		}
		else if (c == '<' && readCount == 1)
		{
			break;
		}
		++readCount;
	}
	while (0 < readCount--)
	{
		scanner.unread();
	}
	return Token.UNDEFINED;
}
 
源代码15 项目: texlipse   文件: TexEnvironmentRule.java
/**
 * Returns whether the end sequence was detected. *
 * 
 * @param scanner the character scanner to be used
 * @return <code>true</code> if the end sequence has been detected
 */
protected boolean endSequenceDetected(ICharacterScanner scanner) {
    int c;
    int readChar = 1;
    while ((c = scanner.read()) != ICharacterScanner.EOF) {
        readChar++;
        if (fEndSequence.length > 0 && c == fEndSequence[0]) {
            // Check if the specified end sequence has been found.
            if (sequenceDetected(scanner, fEndSequence))
                return true;
        }
    }
    unReadScanner(scanner, readChar);
    return false;
}
 
源代码16 项目: xds-ide   文件: CharSetRule.java
public IToken evaluate(ICharacterScanner scanner) {
    int c = scanner.read();
    if (charSet.contains((char)c)) {
        do {
            c = scanner.read();
        } while ((c != ICharacterScanner.EOF) && charSet.contains((char)c));
        scanner.unread();
        return successToken;
    }

    scanner.unread();
    return Token.UNDEFINED;
}
 
public IToken evaluate(ICharacterScanner scanner) {

			int character= scanner.read();
			if (isOperator((char) character)) {
				do {
					character= scanner.read();
				} while (isOperator((char) character));
				scanner.unread();
				return fToken;
			} else {
				scanner.unread();
				return Token.UNDEFINED;
			}
		}
 
源代码18 项目: xds-ide   文件: RealNumberRule.java
public IToken evaluate(ICharacterScanner scanner) {
    int c = scanner.read();
    if ((c != ICharacterScanner.EOF) && Character.isDigit((char)c)) {
        readLength = 1;
        
        do {
            c = scanner.read();
            readLength++;
        } while ((c != ICharacterScanner.EOF) && Character.isDigit((char)c));
        if (c == '.') {
            do {
                c = scanner.read();
            } while ((c != ICharacterScanner.EOF) && Character.isDigit((char)c));
            if (c == 'E') {
                c = scanner.read();
                if ((c == '+') || (c == '-')) {
                    c = scanner.read();
                }
                while ((c != ICharacterScanner.EOF) && Character.isDigit((char)c)) {
                    c = scanner.read();
                }
            }
            scanner.unread();
            return successToken;
        }
        
        while (readLength > 1) {
            readLength--;
            scanner.unread();
        }
    }
    scanner.unread();
    return Token.UNDEFINED;
}
 
源代码19 项目: http4e   文件: XMLTextPredicateRule.java
private int read( ICharacterScanner scanner){
   int c = scanner.read();
   charsRead++;
   return c;
}
 
源代码20 项目: typescript.java   文件: JSXScanner.java
public IToken evaluate(ICharacterScanner scanner) {
	int offset = JSXScanner.this.fOffset;
	int startOffset = JSXScanner.this.startOffset;
	int localOffset = offset - startOffset;
	int rangeEnd = JSXScanner.this.fRangeEnd;

	// start/end tag
	int ch = scanner.read();
	switch (ch) {
	case '<':
		if (localOffset == 0) {
			// first character
			ch = scanner.read();
			if (ch == '/') {
				return tagBorder;
			}
			scanner.unread();
			return tagBorder;
		}
		break;
	case '>':
		if (offset == rangeEnd - 1) {
			// last character
			return tagBorder;
		}
		break;
	case '/':
		if (offset == rangeEnd - 2) {
			// last-1 character
			ch = scanner.read();
			if (ch == '>') {
				return tagBorder;
			}
			scanner.unread();
		}
		break;
	}

	// Tag name
	if (localOffset <= 2) {
		if (ch == '>') {
			//scanner.unread();
			return tagBorder;
		}
		loop: while (true) {
			switch (ch) {
			case ICharacterScanner.EOF:
			case 0x09:
			case 0x0A:
			case 0x0D:
			case 0x20:
			case '>':
				break loop;
			}

			ch = scanner.read();
			// firstCharIsSup = false;
		}

		if (ch == '>') {
			scanner.unread();
		}
		return tagName;
	}
	scanner.unread();
	return Token.UNDEFINED;
}