/******************************************************************************* * Copyright (c) 2007, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM - Initial API and implementation *******************************************************************************/ package org.eclipse.ocl.examples.interpreter.console.text; import org.eclipse.jface.text.TextAttribute; import org.eclipse.jface.text.rules.IRule; import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.NumberRule; import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.rules.SingleLineRule; import org.eclipse.jface.text.rules.Token; import org.eclipse.jface.text.rules.WhitespaceRule; /** * Syntax-highlighting scanner for OCL expressions. * * @author Christian W. Damus (cdamus) */ class OCLScanner extends RuleBasedScanner { OCLScanner(ColorManager manager) { super(); IToken literal = new Token( new TextAttribute(manager.getColor(ColorManager.LITERAL))); IRule[] rules = new IRule[7]; // Add rule for strings rules[0] = new SingleLineRule("'", "'", literal); //$NON-NLS-1$ //$NON-NLS-2$ // Keyword (and pseudo-keyword) rule rules[1] = new OCLKeywordRule(); // Collection and Tuple Literal rules rules[2] = new OCLCollectionTupleRule(manager, false); rules[3] = new OCLCollectionTupleRule(manager, true); // identifier rule rules[4] = new OCLIdentifierRule(); // Add a rule for numbers rules[5] = new NumberRule(literal); // Add generic whitespace rule rules[6] = new WhitespaceRule(new OCLWhitespaceDetector()); setRules(rules); } }