/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0 
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 */

grammar org.eclipse.osbp.xtext.oxtype.OXtype with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations

import "http://www.eclipse.org/xtext/xbase/Xtype"
import "http://www.eclipse.org/xtext/common/JavaVMTypes"
import "http://www.eclipse.org/osbp/xtext/oxtype/OXtype"

@Override
XImportDeclaration returns OXImportDeclaration: 
	{OXImportDeclaration}
	'import' (
		(static?='static' extension?='extension'? importedType=[JvmDeclaredType|QualifiedNameInStaticImport] (wildcard?='*' | memberName=ValidID)) 
		| importedType=[JvmDeclaredType|QualifiedName] 
		| importedNamespace=QualifiedNameWithWildcard
		| fqnImport?='ns' importedFullyQualifiedName=QualifiedName) ';'?
;
