| /** |
| * |
| * Copyright (c) 2011, 2018 - 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: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| * |
| */ |
| grammar org.eclipse.osbp.xtext.signal.SignalDSL with org.eclipse.osbp.xtext.oxtype.OXtype |
| |
| import "http://osbp.eclipse.org/xtext/signal/SignalDSL" |
| import "http://osbp.eclipse.org/xtext/datainterchange/DataDSL" as data |
| import "http://osbp.eclipse.org/dsl/common/types/v1" as types |
| import "http://www.eclipse.org/emf/2002/Ecore" as ecore |
| |
| SignalModel: |
| importSection=XImportSection? |
| packages=SignalPackage; |
| |
| SignalPackage: |
| {SignalPackage} 'package' name=QualifiedName |
| ('{' |
| (signals+=SignalDefinition)* |
| '}')? |
| ; |
| |
| SignalDefinition: |
| SignalWatcher | SignalScheduler |
| ; |
| |
| SignalWatcher: |
| {SignalWatcher} |
| 'watcher' name=TRANSLATABLEID |
| definition=WatcherDefinition |
| ; |
| |
| WatcherDefinition: |
| WatcherWithFileMask | WatcherWithFileName |
| ; |
| |
| WatcherWithFileMask: |
| {WatcherWithFileMask} |
| 'filemask' filemask=STRING |
| executiontype=SignalExecutionTypeEnum |
| 'from' interchangegroup=[data::DataInterchangeGroup] |
| '{' |
| interchange=SignalDatainterchange |
| '}' |
| ; |
| |
| WatcherWithFileName: |
| {WatcherWithFileName} |
| 'filename' filename=STRING |
| executiontype=SignalExecutionTypeEnum |
| 'from' interchangegroup=[data::DataInterchangeGroup] |
| '{' |
| interchanges+=SignalDatainterchange* |
| '}' |
| ; |
| |
| SignalScheduler: |
| {SignalScheduler} |
| 'scheduler' name=TRANSLATABLEID |
| schedulertype=SchedulerType |
| (executiontype=SignalExecutionTypeEnum)? |
| 'from' interchangegroup=[data::DataInterchangeGroup] |
| '{' |
| interchanges+=SignalDatainterchange* |
| '}' |
| ; |
| |
| SchedulerType: |
| CronScheduler | HourlyScheduler | DailyScheduler | WeeklyScheduler | MonthlyScheduler; |
| |
| CronScheduler: |
| 'cron' expression=STRING; |
| |
| HourlyScheduler: |
| 'hourlyat' minute=INT; |
| |
| DailyScheduler: |
| 'dailyat' hour=INT ':' minute=INT; |
| WeeklyScheduler: |
| 'weeklyon' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT; |
| |
| MonthlyScheduler: |
| 'monthlyon' dayofmonth=INT 'at' hour=INT ':' minute=INT; |
| |
| SignalDatainterchange: |
| dataAction=SignalActionEnum |
| dataRef=[data::DataInterchange] |
| (baseinterchange?='applyon')? |
| ; |
| |
| enum SignalActionEnum: |
| DATAIMPORT='import' | |
| DATAEXPORT='export' |
| ; |
| |
| enum SignalExecutionTypeEnum: |
| SEQ='sequential' | |
| NOSEQ='parallel' |
| ; |
| |
| enum DayOfWeekEnum: |
| SUNDAY='sunday' | |
| MONDAY='monday' | |
| TUESDAY='tuesday' | |
| WEDNESDAY='wednesday' | |
| THURSDAY='thursday' | |
| FRIDAY='friday' | |
| SATURDAY='saturday' |
| ; |
| |
| TRANSLATABLEID: |
| ID |
| ; |
| |
| TRANSLATABLESTRING: |
| STRING |
| ; |