ool.core.interpreter.2.6.0.source-code.overtureII.astv2 Maven / Gradle / Ivy
//TODO1: maybe generate classes with the Comparable interface
Packages
base org.overture.interpreter.ast.node;
analysis org.overture.interpreter.ast.analysis;
Tokens
/* This section declared tokens as internal types or external classes
* internal definitions:
* plus='+';
*
* external
* location = 'java:org.overture.vdmj.lex.LexLocation';
*/
LexToken = 'java:node:org.overture.interpreter.vdmj.lex.LexToken';
LexNameToken = 'java:node:org.overture.interpreter.vdmj.lex.LexNameToken';
LexIdentifierToken = 'java:node:org.overture.interpreter.vdmj.lex.LexIdentifierToken';
LexBooleanToken = 'java:node:org.overture.interpreter.vdmj.lex.LexBooleanToken';
LexCharacterToken = 'java:node:org.overture.interpreter.vdmj.lex.LexCharacterToken';
LexIntegerToken = 'java:node:org.overture.interpreter.vdmj.lex.LexIntegerToken';
LexQuoteToken = 'java:node:org.overture.interpreter.vdmj.lex.LexQuoteToken';
LexRealToken = 'java:node:org.overture.interpreter.vdmj.lex.LexRealToken';
LexStringToken = 'java:node:org.overture.interpreter.vdmj.lex.LexStringToken';
//Delegate = 'java:node:org.overture.vdmj.util.Delegate';
clonableFile ='java:org.overture.interpreter.util.ClonableFile';
ClassDefinitionSettings = 'java:enum:org.overture.vdmj.typechecker.ClassDefinitionSettings';
Breakpoint ='java:node:org.overture.vdmj.runtime.Breakpoint';
BreakpointCondition = 'java:enum:org.overture.vdmj.runtime.BreakpointCondition';
FunctionValue = 'java:org.overture.vdmj.values.FunctionValue';
State = 'java:org.overture.vdmj.values.State';
Delegate ='java:org.overture.vdmj.util.Delegate';
location = 'java:org.overture.interpreter.vdmj.lex.LexLocation';
plus = '+';
java_Boolean = 'java:java.lang.Boolean';
java_Integer = 'java:java.lang.Integer';
java_String = 'java:java.lang.String';
java_Long = 'java:java.lang.Long';
//java_file = 'java:java.io.File';
nameScope = 'java:enum:org.overture.vdmj.typechecker.NameScope';
Abstract Syntax Tree
/*
Expressions
*/
exp {-> package='org.overture.interpreter.ast.expressions'}
= #Unary
| #Binary
| #Map
| #Seq
| #Set
| {breakpoint} [cond]:BreakpointCondition [arg]:java_Long
;
#Unary {-> package='org.overture.interpreter.ast.expressions'}
;
#Binary {-> package='org.overture.interpreter.ast.expressions'}
= #Boolean| #Numeric
;
#Boolean {-> package='org.overture.interpreter.ast.expressions'}
;
#Numeric {-> package='org.overture.interpreter.ast.expressions'}
;
#Map {-> package='org.overture.interpreter.ast.expressions'}
;
#Seq {-> package='org.overture.interpreter.ast.expressions'}
;
#Set {-> package='org.overture.interpreter.ast.expressions'}
;
modifier {-> package='org.overture.interpreter.ast.expressions'}
;
alternative {-> package='org.overture.interpreter.ast.expressions'}
;
//boolean_const
// = {true}
// | {false}
// ;
type {-> package='org.overture.interpreter.ast.types'}
= #seq|#Map|#invariant|#basic
;
#seq {-> package='org.overture.interpreter.ast.types'}
;
#Map {-> package='org.overture.interpreter.ast.types'}
;
#invariant {-> package='org.overture.interpreter.ast.types'}
;
#basic {-> package='org.overture.interpreter.ast.types'}
=#numeric
;
#numeric {-> package='org.overture.interpreter.ast.types'}
;
field {-> package='org.overture.interpreter.ast.types'}
;
accessSpecifier {-> package='org.overture.interpreter.ast.types'}
;
access {-> package='org.overture.interpreter.ast.definitions'}
;
pattern {-> package='org.overture.interpreter.ast.patterns'}
;
pair {-> package='org.overture.interpreter.ast.patterns'}
;
bind {-> package='org.overture.interpreter.ast.patterns'}
;
//This is used in PExp and PDefinition
multipleBind {-> package='org.overture.interpreter.ast.patterns'}
;
patternBind {-> package='org.overture.interpreter.ast.patterns'}
;
definition {-> package='org.overture.interpreter.ast.definitions'}
=#class
| {state} [invfunc]:FunctionValue [initfunc]:FunctionValue //(canBeExecuted):java_Boolean
[moduleState]:State
;
/*
* Trace defintions which is not definitions...
*/
traceDefinition {-> package='org.overture.interpreter.ast.definitions.traces'}
;
traceCoreDefinition {-> package='org.overture.interpreter.ast.definitions.traces'}
;
//trace end....
#class {-> package='org.overture.interpreter.ast.definitions'}
;
modules {-> package='org.overture.interpreter.ast.modules'}
;
imports {-> package='org.overture.interpreter.ast.modules'}
;
import {-> package='org.overture.interpreter.ast.modules'}
=#value
;
#value {-> package='org.overture.interpreter.ast.modules'}
;
//util {-> package='org.overture.interpreter.ast.util'}
// = {file} [file]:java_file
// ;
exports {-> package='org.overture.interpreter.ast.modules'}
;
export {-> package='org.overture.interpreter.ast.modules'}
;
//patternList {-> package='org.overture.interpreter.ast.patterns'}
// = {pattern_inner_list} [list]:pattern*
// ;
/*
Statements
*/
stm {-> package='org.overture.interpreter.ast.statements'}
=#LetDef |#SimpleBlock
;
#LetDef {-> package='org.overture.interpreter.ast.statements'}
;
#SimpleBlock {-> package='org.overture.interpreter.ast.statements'}
;
stateDesignator {-> package='org.overture.interpreter.ast.statements'}
;
objectDesignator {-> package='org.overture.interpreter.ast.statements'}
;
alternativeStm {-> package='org.overture.interpreter.ast.statements'}
;
stmtAlternative {-> package='org.overture.interpreter.ast.statements'}
;
clause {-> package='org.overture.interpreter.ast.statements'}
;
case {-> package='org.overture.interpreter.ast.statements'}
;
//NODE {-> package='org.overture.interpreter.ast.sometest'}
// = {AABBCC}
// ;
Aspect Declaration
%exp = [breakpoint]:Breakpoint
;
%definition->#class
= [delegate]:Delegate
;