| /* |
| * Copyright (c) 2008, 2010 Borland Software Corporation |
| * |
| * 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: |
| * Artem Tikhomirov (Borland) - initial API and implementation |
| */ |
| package org.eclipse.gmf.internal.xpand.ocl; |
| |
| import lpg.runtime.Monitor; |
| |
| import org.eclipse.emf.ecore.EClass; |
| import org.eclipse.emf.ecore.EClassifier; |
| import org.eclipse.emf.ecore.EEnumLiteral; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.EOperation; |
| import org.eclipse.emf.ecore.EPackage; |
| import org.eclipse.emf.ecore.EParameter; |
| import org.eclipse.emf.ecore.EStructuralFeature; |
| import org.eclipse.ocl.cst.CSTNode; |
| import org.eclipse.ocl.cst.OCLExpressionCS; |
| import org.eclipse.ocl.cst.TypeCS; |
| import org.eclipse.ocl.ecore.CallOperationAction; |
| import org.eclipse.ocl.ecore.Constraint; |
| import org.eclipse.ocl.ecore.EcoreEnvironment; |
| import org.eclipse.ocl.ecore.OCLExpression; |
| import org.eclipse.ocl.ecore.SendSignalAction; |
| import org.eclipse.ocl.parser.AbstractOCLAnalyzer; |
| import org.eclipse.ocl.parser.OCLLexer; |
| import org.eclipse.ocl.parser.OCLParser; |
| |
| class EmbeddedOCLAnalyzer extends AbstractOCLAnalyzer< |
| EPackage, EClassifier, EOperation, EStructuralFeature, |
| EEnumLiteral, EParameter, |
| EObject, CallOperationAction, SendSignalAction, Constraint, |
| EClass, EObject> { |
| |
| EmbeddedOCLAnalyzer(EcoreEnvironment environment) { |
| // EcoreEnvironment is also BasicEnvironment, |
| // and hence #getOCLEnvironment() would return it. |
| // The rest of AbstractOCLParser is only that we need to pass anything but null |
| // to superclass's constructor |
| super(new OCLParser(new OCLLexer(environment)) { |
| |
| @Override |
| public CSTNode parser(Monitor monitor, int error_repair_count) { |
| throw new UnsupportedOperationException("This analyzer is expected to get CST ready for use"); |
| } |
| }); |
| } |
| |
| public OCLExpression analyzeExpression(OCLExpressionCS exprCS) { |
| return (OCLExpression) super.oclExpressionCS(exprCS, getOCLEnvironment()); |
| } |
| |
| public EClassifier typeForName(TypeCS typeCS) { |
| return super.typeCS(typeCS, getOCLEnvironment()); |
| } |
| } |