| /******************************************************************************* |
| * Copyright (c) 2009 itemis AG (http://www.itemis.eu) and others. |
| * 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 |
| *******************************************************************************/ |
| grammar org.eclipse.xtext.example.domainmodel.Domainmodel with org.eclipse.xtext.xbase.Xbase |
| |
| generate domainmodel "http://www.xtext.org/example/Domainmodel" |
| |
| DomainModel: |
| importSection=XImportSection? |
| elements+=AbstractElement*; |
| |
| AbstractElement: |
| PackageDeclaration | Entity; |
| |
| PackageDeclaration: |
| 'package' name=QualifiedName '{' |
| elements+=AbstractElement* |
| '}'; |
| |
| Entity: |
| 'entity' name=ValidID ('extends' superType=JvmParameterizedTypeReference)? '{' |
| features+=Feature* |
| '}'; |
| |
| Feature: |
| Property | Operation; |
| |
| Property: |
| name=ValidID ':' type=JvmTypeReference; |
| |
| Operation: |
| 'op' name=ValidID '(' (params+=FullJvmFormalParameter (',' params+=FullJvmFormalParameter)*)? ')' (':' type=JvmTypeReference)? |
| body=XBlockExpression; |