Skip to content
Open
Show file tree
Hide file tree
Changes from 43 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
17736f9
more values & use typecheck
samuel-thesing Feb 14, 2025
20d8cc9
full common & assignment expressions; working tests
samuel-thesing Feb 20, 2025
4a5dc85
fix
samuel-thesing Feb 21, 2025
d48bbc0
fix InterpreterDecoratorTest
samuel-thesing Feb 21, 2025
f2bcb6d
fix InterpreterDecoratorTest
samuel-thesing Feb 21, 2025
47663ba
Added FunctionValue & Lambdas
samuel-thesing Feb 25, 2025
b7e640f
Merge remote-tracking branch 'origin/dev' into interpreter
samuel-thesing Feb 26, 2025
9d7bf71
Added load/store for functions
samuel-thesing Mar 10, 2025
875abcd
Merge remote-tracking branch 'origin/dev' into interpreter
samuel-thesing Jun 10, 2025
14923be
Value -> MIValue
samuel-thesing Jun 24, 2025
ade7049
ILValueRelations fix package
samuel-thesing Jun 24, 2025
ff3a910
Java-Objects & better errors
samuel-thesing Jun 24, 2025
149fa6d
class2mc
samuel-thesing Jun 24, 2025
ba434e2
Interpreter Statements, Test-Klassen, WriteableMIValue
samuel-thesing Aug 4, 2025
9b887d7
Fix InterpreterDecoratorTest
samuel-thesing Aug 8, 2025
28b696c
Remove Class2mc from AbstractTypeVisitorTest
samuel-thesing Aug 8, 2025
8a2feb9
Remove Class2mc from AbstractStatementInterpreterTest
samuel-thesing Aug 8, 2025
afb73d3
Remove Class2mc-import from AbstractStatementInterpreterTest
samuel-thesing Aug 8, 2025
42788b0
complete assignment-tests & better failed messages
samuel-thesing Aug 11, 2025
3032dc3
Doc-Comments
samuel-thesing Aug 12, 2025
bc97527
More MCCommonStatement- & SetExpressions-Tests
samuel-thesing Aug 12, 2025
4b935b8
add Interpreter documentation
SE-FDr Aug 13, 2025
a3fbfb0
Interpreter.md small edits
SE-FDr Aug 14, 2025
c5b7bee
interpreter initial cleanup
SE-FDr Aug 14, 2025
9d2626f
Merge branch 'dev' into interpreter
Hendrik7889 Feb 2, 2026
3f45f83
Merge branch 'dev' into interpreter
Hendrik7889 Feb 2, 2026
e5cac50
Use ISymbol/MIValue and add simple equations demo
Hendrik7889 Feb 27, 2026
af7dfbe
Merge branch 'dev' into interpreter-2
Hendrik7889 Feb 27, 2026
9713c03
fix pipeline
Hendrik7889 Feb 27, 2026
cc19559
revert change of a generic ModelInterpreter and fix grammar
Hendrik7889 Mar 4, 2026
9a43462
sync
Hendrik7889 Mar 8, 2026
3356751
add functions (lcoal vars are not working
Hendrik7889 Mar 9, 2026
5e5130d
Update SimpleEquationsInterpreter.java
Hendrik7889 Mar 9, 2026
a352004
use declareFunction
Hendrik7889 Mar 9, 2026
0de65c1
scope error preserves
Hendrik7889 Mar 9, 2026
e6f791f
still there
Hendrik7889 Mar 9, 2026
fe89db5
Update SimpleEquations.mc4
Hendrik7889 Mar 9, 2026
9ef432b
sync
Hendrik7889 Mar 9, 2026
2a4eb3b
fixed double resolve
Hendrik7889 Mar 10, 2026
14f17fa
Merge branch 'dev' into interpreter-2
Hendrik7889 Mar 23, 2026
fc393c3
Merge branch 'dev' into interpreter-2
Hendrik7889 Mar 30, 2026
b82daec
fix pipeline
Hendrik7889 Mar 31, 2026
86fc263
Merge branch 'dev' into interpreter-2
Hendrik7889 Apr 13, 2026
ceee953
Update build.gradle
Hendrik7889 Apr 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -806,12 +806,14 @@ protected void decorateWithTraverser(ASTCDCompilationUnit cd,
public void decorateWithInterpreter(List<ASTCDCompilationUnit> cds,
ASTCDCompilationUnit decoratedCD,
GlobalExtensionManagement glex) {

ASTService astService = new ASTService(cds.get(0));
VisitorService visitorService = new VisitorService(cds.get(0));

InterpreterInterfaceDecorator interpreterInterfaceDecorator = new InterpreterInterfaceDecorator(glex, visitorService);
interpreterInterfaceDecorator.decorate(cds.get(0), decoratedCD);

InterpreterDecorator interpreterDecorator = new InterpreterDecorator(glex, visitorService);
InterpreterDecorator interpreterDecorator = new InterpreterDecorator(glex, astService, visitorService);
interpreterDecorator.decorate(cds.get(0), decoratedCD);

ASTEvaluateDecorator evaluateDecorator = new ASTEvaluateDecorator(glex, visitorService);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ private SymbolTableConstants() {

public static final String I_STEREOTYPE_REFERENCE = "de.monticore.symboltable.stereotypes.IStereotypeReference";

public static final String INTERPRETER_VALUE = "de.monticore.interpreter.Value";
public static final String INTERPRETER_VALUE = "de.monticore.interpreter.MIValue";

/**
* attribute names
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
/* (c) https://github.com/MontiCore/monticore */
package de.monticore.codegen.cd2java.interpreter;

import de.monticore.cd4code.CD4CodeMill;
import de.monticore.cd4code._util.ICD4CodeTypeDispatcher;
import de.monticore.cd4codebasis._ast.ASTCDMethod;
import de.monticore.cd4codebasis._ast.ASTCDParameter;
import de.monticore.cdbasis._ast.*;
Expand Down Expand Up @@ -35,9 +37,10 @@ public ASTEvaluateDecorator(GlobalExtensionManagement glex,

public void decorate(ASTCDCompilationUnit input, ASTCDCompilationUnit decoratedCD) {
ASTCDPackage astPackage = getPackage(input, decoratedCD, ASTConstants.AST_PACKAGE);
ICD4CodeTypeDispatcher dispatcher = CD4CodeMill.typeDispatcher();
astPackage.streamCDElements()
.filter(e -> e instanceof ASTCDClass)
.map(e -> (ASTCDClass) e)
.filter(dispatcher::isCDBasisASTCDClass)
.map(dispatcher::asCDBasisASTCDClass)
.forEach(t -> t.addAllCDMembers(decorate(t)));
}

Expand Down Expand Up @@ -74,7 +77,7 @@ protected ASTCDMethod createEvaluateInterpreterMethod(ASTCDType cdType) {

protected ASTCDMethod createEvaluateInterpreterSuperMethod(ASTCDType cdType) {
ASTCDParameter parameter = cdParameterFacade.createParameter(
mcTypeFacade.createQualifiedType(InterpreterConstants.MODELINTERPRETER_FULLNAME),
mcTypeFacade.createQualifiedType(InterpreterConstants.IMODELINTERPRETER_FULLNAME),
"interpreter");
ASTCDMethod method = cdMethodFacade.createMethod(
PUBLIC.build(), InterpreterConstants.VALUE_FULLNAME, "evaluate", parameter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,20 @@ public final class InterpreterConstants {
public static final String INTERPRET_METHOD_NAME = "interpret";

public static final String MODELINTERPRETER_FULLNAME = "de.monticore.interpreter.ModelInterpreter";
public static final String IMODELINTERPRETER_FULLNAME = "de.monticore.interpreter.IModelInterpreter";

public static final String INTERPRETER_SCOPE_FULLNAME = "de.monticore.interpreter.MIScope";

public static final String VALUE_FULLNAME = "de.monticore.interpreter.Value";
public static final String VALUE_FULLNAME = "de.monticore.interpreter.MIValue";
public static final String FUNCTION_VALUE_FULLNAME = "de.monticore.interpreter.values.FunctionMIValue";

public static final String NOT_A_VALUE_FULLNAME = "de.monticore.interpreter.values.NotAValue";

public static final String NODE_TYPE = "de.monticore.ast.ASTNode";

public static final String NODE_PARAMETER = "node";

public static final String SYMBOL_FULLNAME = "de.monticore.symboltable.ISymbol";
public static final String VARIABLE_SYMBOL_FULLNAME = "de.monticore.symbols.basicsymbols._symboltable.VariableSymbol";
public static final String FUNCTION_SYMBOL_FULLNAME = "de.monticore.symbols.basicsymbols._symboltable.FunctionSymbol";

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import de.monticore.cdbasis._ast.*;
import de.monticore.cdbasis._symboltable.CDTypeSymbol;
import de.monticore.codegen.cd2java.AbstractCreator;
import de.monticore.codegen.cd2java._ast.ast_class.ASTService;
import de.monticore.codegen.cd2java._visitor.VisitorConstants;
import de.monticore.codegen.cd2java._visitor.VisitorService;
import de.monticore.codegen.cd2java.methods.MethodDecorator;
Expand All @@ -17,6 +18,7 @@
import de.monticore.generating.templateengine.TemplateHookPoint;
import de.monticore.symbols.basicsymbols._symboltable.DiagramSymbol;
import de.monticore.types.mcbasictypes._ast.ASTMCReturnType;
import de.monticore.types.mcbasictypes._ast.ASTMCType;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -28,13 +30,17 @@

public class InterpreterDecorator
extends AbstractCreator<ASTCDCompilationUnit, ASTCDClass> {

protected final ASTService astService;

protected final VisitorService service;
protected final VisitorService visitorService;

public InterpreterDecorator(GlobalExtensionManagement glex,
VisitorService service) {
ASTService astService,
VisitorService visitorService) {
super(glex);
this.service = service;
this.astService = astService;
this.visitorService = visitorService;
}

public void decorate(ASTCDCompilationUnit input,
Expand All @@ -48,7 +54,7 @@ public void decorate(ASTCDCompilationUnit input,
public ASTCDClass decorate(ASTCDCompilationUnit input) {
return CD4CodeMill.cDClassBuilder()
.setModifier(PUBLIC.build())
.setName(service.getInterpreterSimpleName())
.setName(visitorService.getInterpreterSimpleName())
.setCDInterfaceUsage(getSuperInterface())
.addAllCDMembers(getInterpreterAttributes())
.addAllCDMembers(getConstructors())
Expand All @@ -62,7 +68,7 @@ public List<ASTCDConstructor> getConstructors() {
ASTCDParameter parameter = cdParameterFacade.createParameter(
MODELINTERPRETER_FULLNAME, "realThis");

String interpreterName = service.getInterpreterSimpleName();
String interpreterName = visitorService.getInterpreterSimpleName();
ASTCDConstructor constructorNoParams = cdConstructorFacade
.createConstructor(PUBLIC.build(), interpreterName);
ASTCDConstructor constructorRealThis = cdConstructorFacade
Expand All @@ -71,9 +77,9 @@ public List<ASTCDConstructor> getConstructors() {
List<String> names = new ArrayList<>();
List<String> types = new ArrayList<>();

for (DiagramSymbol symbol : service.getSuperCDsTransitive()) {
names.add(service.getInterpreterSimpleName(symbol));
types.add(service.getInterpreterFullName(symbol));
for (DiagramSymbol symbol : visitorService.getSuperCDsTransitive()) {
names.add(visitorService.getInterpreterSimpleName(symbol));
types.add(visitorService.getInterpreterFullName(symbol));
}

replaceTemplate(EMPTY_BODY, constructorRealThis,
Expand All @@ -90,25 +96,29 @@ public List<ASTCDMethod> getInterpretMethods() {
ASTMCReturnType returnType = CD4CodeMill.mCReturnTypeBuilder()
.setMCType(mcTypeFacade.createQualifiedType(VALUE_FULLNAME)).build();

for (CDTypeSymbol typeSymbol : service.getAllCDTypes()) {
for (CDTypeSymbol typeSymbol : visitorService.getAllCDTypes()) {
if (typeSymbol.isIsClass() || typeSymbol.isIsInterface()) {
ASTCDParameter parameter = cdParameterFacade
.createParameter(service.createASTFullName(typeSymbol), NODE_PARAMETER);
.createParameter(visitorService.createASTFullName(typeSymbol), NODE_PARAMETER);
ASTCDMethod method = cdMethodFacade.createMethod(
PUBLIC.build(), returnType, "interpret", parameter);
this.replaceTemplate(
EMPTY_BODY, method, new StringHookPoint("return node.evaluate(getRealThis());"));

String errorCode = astService.getGeneratedErrorCode(typeSymbol.getFullName());

this.replaceTemplate(EMPTY_BODY, method,
new TemplateHookPoint("interpreter.NoImplementation",
typeSymbol.getFullName(), errorCode));
methods.add(method);
}
}

for (DiagramSymbol diagramSymbol : service.getSuperCDsTransitive()) {
if (diagramSymbol != service.getCDSymbol()) {
String interpreterName = uncapFirst(service.getInterpreterSimpleName(diagramSymbol));
for (CDTypeSymbol typeSymbol : service.getAllCDTypes(diagramSymbol)) {
for (DiagramSymbol diagramSymbol : visitorService.getSuperCDsTransitive()) {
if (diagramSymbol != visitorService.getCDSymbol()) {
String interpreterName = uncapFirst(visitorService.getInterpreterSimpleName(diagramSymbol));
for (CDTypeSymbol typeSymbol : visitorService.getAllCDTypes(diagramSymbol)) {
if (typeSymbol.isIsClass() || typeSymbol.isIsInterface()) {
ASTCDParameter parameter = cdParameterFacade
.createParameter(service.createASTFullName(typeSymbol), NODE_PARAMETER);
.createParameter(visitorService.createASTFullName(typeSymbol), NODE_PARAMETER);
ASTCDMethod method = cdMethodFacade.createMethod(
PUBLIC.build(), returnType, "interpret", parameter);
this.replaceTemplate(
Expand All @@ -126,29 +136,55 @@ EMPTY_BODY, method, new StringHookPoint(

public List<ASTCDMember> createMapMembers() {
List<ASTCDMember> members = new ArrayList<>();

members.add(cdAttributeFacade.createAttribute(
PROTECTED.build(),
mcTypeFacade.createMapTypeOf(SYMBOL_FULLNAME, VALUE_FULLNAME),
"contextMap"));

ASTCDParameter symbolParameter = cdParameterFacade.createParameter(SYMBOL_FULLNAME, "symbol");
ASTCDParameter valueParameter = cdParameterFacade.createParameter(VALUE_FULLNAME, "value");
ASTCDMethod storeMethod = cdMethodFacade.createMethod(
PUBLIC.build(), "store", symbolParameter, valueParameter);
this.replaceTemplate(EMPTY_BODY, storeMethod, new StringHookPoint("getRealThis().getContextMap().put(symbol, value);"));
members.add(storeMethod);

ASTCDMethod loadMethod = cdMethodFacade.createMethod(PUBLIC.build(), VALUE_FULLNAME, "load", symbolParameter);
this.replaceTemplate(EMPTY_BODY, loadMethod, new StringHookPoint("return getRealThis().getContextMap().get(symbol);"));
members.add(loadMethod);

ASTCDMethod getter = cdMethodFacade.createMethod(
PUBLIC.build(),
mcTypeFacade.createMapTypeOf(SYMBOL_FULLNAME, VALUE_FULLNAME),
"getContextMap");
this.replaceTemplate(EMPTY_BODY, getter, new StringHookPoint("return this.contextMap;"));
members.add(getter);

ASTMCType scopeStackType = mcTypeFacade.createBasicGenericTypeOf("java.util.Stack", INTERPRETER_SCOPE_FULLNAME);

members.add(cdAttributeFacade.createAttribute(PROTECTED.build(), scopeStackType, "scopeCallstack"));

// ASTCDMethod declareFuncMethod = cdMethodFacade.createMethod(
// PUBLIC.build(), "declareFunction", functionSymbolParameter, functionValueParameter);
// this.replaceTemplate(EMPTY_BODY, declareFuncMethod, new StringHookPoint("getRealThis().getCurrentScope().declareFunction(symbol, value);"));
// members.add(declareFuncMethod);
//
// ASTCDMethod loadFuncMethod = cdMethodFacade.createMethod(PUBLIC.build(), VALUE_FULLNAME, "loadFunction", functionSymbolParameter);
// this.replaceTemplate(EMPTY_BODY, loadFuncMethod, new StringHookPoint("return getRealThis().getCurrentScope().loadFunction(symbol);"));
// members.add(loadFuncMethod);
//
// ASTCDMethod declareVarMethod = cdMethodFacade.createMethod(
// PUBLIC.build(), "declareVariable", variableSymbolParameter, optionalValueParameter);
// this.replaceTemplate(EMPTY_BODY, declareVarMethod, new StringHookPoint("getRealThis().getCurrentScope().declareVariable(symbol, value);"));
// members.add(declareVarMethod);
//
// ASTCDMethod loadVarMethod = cdMethodFacade.createMethod(PUBLIC.build(), VALUE_FULLNAME,
// "loadVariable", variableSymbolParameter);
// this.replaceTemplate(EMPTY_BODY, loadVarMethod, new StringHookPoint("return getRealThis().getCurrentScope().loadVariable(symbol);"));
// members.add(loadVarMethod);
//
// ASTCDMethod storeVarMethod = cdMethodFacade.createMethod(
// PUBLIC.build(), "storeVariable", variableSymbolParameter, valueParameter);
// this.replaceTemplate(EMPTY_BODY, storeVarMethod, new StringHookPoint("getRealThis().getCurrentScope().storeVariable(symbol, value);"));
// members.add(storeVarMethod);
//
// ASTCDMethod getter = cdMethodFacade.createMethod(
// PUBLIC.build(),
// mcTypeFacade.createQualifiedType(INTERPRETER_SCOPE_FULLNAME),
// "getCurrentScope");
// this.replaceTemplate(EMPTY_BODY, getter, new StringHookPoint("return getRealThis().scopeCallstack.peek();"));
// members.add(getter);
//
// ASTCDParameter scopeParameter = cdParameterFacade.createParameter(INTERPRETER_SCOPE_FULLNAME, "scope");
// ASTCDMethod pushScopeMethod = cdMethodFacade.createMethod(PUBLIC.build(), "pushScope", scopeParameter);
// this.replaceTemplate(EMPTY_BODY, pushScopeMethod, new StringHookPoint("getRealThis().scopeCallstack.push(scope);"));
// members.add(pushScopeMethod);
//
// ASTCDMethod popScopeMethod = cdMethodFacade.createMethod(PUBLIC.build(), "popScope");
// this.replaceTemplate(EMPTY_BODY, popScopeMethod, new StringHookPoint("getRealThis().scopeCallstack.pop();"));
// members.add(popScopeMethod);

ASTCDMethod getScopeCallstackMethod = cdMethodFacade.createMethod(PUBLIC.build(), scopeStackType,
"getScopeCallstack");
this.replaceTemplate(EMPTY_BODY, getScopeCallstackMethod, new StringHookPoint("return scopeCallstack;"));
members.add(getScopeCallstackMethod);

return members;
}
Expand All @@ -163,24 +199,24 @@ public List<ASTCDMember> getRealThisComponents() {
"realThis");
components.add(realThisAttribute);

MethodDecorator methodDecorator = new MethodDecorator(glex, service);
MethodDecorator methodDecorator = new MethodDecorator(glex, visitorService);
components.addAll(methodDecorator.decorate(realThisAttribute));

return components;
}

public List<ASTCDAttribute> getInterpreterAttributes() {
return service.getSuperCDsTransitive()
return visitorService.getSuperCDsTransitive()
.stream()
.map(s -> cdAttributeFacade.createAttribute(
PROTECTED.build(), service.getInterpreterType(s),
uncapFirst(service.getInterpreterSimpleName(s))))
PROTECTED.build(), visitorService.getInterpreterType(s),
uncapFirst(visitorService.getInterpreterSimpleName(s))))
.collect(Collectors.toList());
}

public ASTCDInterfaceUsage getSuperInterface() {
return CDInterfaceUsageFacade.getInstance()
.createCDInterfaceUsage(service.getInterpreterInterfaceSimpleName());
.createCDInterfaceUsage(visitorService.getInterpreterInterfaceSimpleName());
}

protected String uncapFirst(String s) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ ${tc.signature("symTabMill", "symbolFullName", "symbolSimpleName","symbolRuleAtt
}
if (symbolJson.hasArrayMember(de.monticore.symboltable.serialization.JsonDeSers.STEREO_INFO)) {
for (de.monticore.symboltable.serialization.json.JsonElement stereoinfoJson : symbolJson.getArrayMember(de.monticore.symboltable.serialization.JsonDeSers.STEREO_INFO)) {
java.util.Map.Entry<de.monticore.symboltable.stereotypes.IStereotypeReference, java.util.Optional<de.monticore.interpreter.Value>> stereoinfo = de.monticore.symboltable.stereotypes.StereoinfoDeSer.deserialize(stereoinfoJson, scope);
java.util.Map.Entry<de.monticore.symboltable.stereotypes.IStereotypeReference, java.util.Optional<de.monticore.interpreter.MIValue>> stereoinfo = de.monticore.symboltable.stereotypes.StereoinfoDeSer.deserialize(stereoinfoJson, scope);
if (stereoinfo.getValue().isPresent()) {
builder.addStereoinfo(stereoinfo.getKey(), stereoinfo.getValue().get());
} else {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<#-- (c) https://github.com/MontiCore/monticore -->
${tc.signature("names", "types")}

this.contextMap = new java.util.HashMap<>();
this.scopeCallstack = new Stack<de.monticore.interpreter.MIScope>();
this.scopeCallstack.push(new de.monticore.interpreter.MIScope());
this.setRealThis(this);
<#list names as name>
this.${name?uncap_first} = new ${types[name?index]}(this);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<#-- (c) https://github.com/MontiCore/monticore -->
${tc.signature("name", "errorCode")}

String errorMsg = "0x57086${errorCode} Interpreter was not implemented for ${name}";
de.se_rwth.commons.logging.Log.error(errorMsg, node.get_SourcePositionStart(), node.get_SourcePositionEnd());
return new de.monticore.interpreter.values.ErrorMIValue(errorMsg);
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public class SymbolBuilderDecoratorTest extends DecoratorTestCase {

private static final String I_STEREOTYPE_REF = "de.monticore.symboltable.stereotypes.IStereotypeReference";

private static final String VALUE = "de.monticore.interpreter.Value";
private static final String VALUE = "de.monticore.interpreter.MIValue";

@BeforeEach
public void setup() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public class SymbolDecoratorTest extends DecoratorTestCase {

private static final String I_STEREOTYPE_REF = "de.monticore.symboltable.stereotypes.IStereotypeReference";

private static final String VALUE = "de.monticore.interpreter.Value";
private static final String VALUE = "de.monticore.interpreter.MIValue";

private static final String I_AUTOMATON_SCOPE = "de.monticore.codegen.symboltable.automatonsymbolcd._symboltable.IAutomatonSymbolCDScope";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public class SymbolSurrogateBuilderDecoratorTest extends DecoratorTestCase {

private static final String I_STEREOTYPE_REF = "de.monticore.symboltable.stereotypes.IStereotypeReference";

private static final String VALUE = "de.monticore.interpreter.Value";
private static final String VALUE = "de.monticore.interpreter.MIValue";

@BeforeEach
public void setUp() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public class SymbolSurrogateDecoratorTest extends DecoratorTestCase {

private static final String I_STEREOTYPE_REF = "de.monticore.symboltable.stereotypes.IStereotypeReference";

private static final String VALUE = "de.monticore.interpreter.Value";
private static final String VALUE = "de.monticore.interpreter.MIValue";

private static final String I_AUTOMATON_SCOPE = "de.monticore.codegen.symboltable.automatonsymbolcd._symboltable.IAutomatonSymbolCDScope";

Expand Down
Loading
Loading