All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ool.core.interpreter.2.6.0.source-code.overtureII.astv2 Maven / Gradle / Ivy

There is a newer version: 3.0.2
Show newest version
//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 
    ;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy