Skip to content
Snippets Groups Projects
Select Git revision
  • a448bfa793fefe365fd1d664d3476cf8d322a86b
  • master default protected
  • exec_auto_adjust_trace
  • let_variables
  • v1.4.1
  • v1.4.0
  • v1.3.0
  • v1.2.0
  • v1.1.0
  • v1.0.0
10 results

ProBKernel.java

Blame
  • user avatar
    dgelessus authored
    Very basic kernel, only supports evaluation of Classical B expressions
    and nothing else.
    a448bfa7
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    ProBKernel.java 1.19 KiB
    package de.prob2.jupyter;
    
    import com.google.inject.Inject;
    
    import de.prob.animator.domainobjects.AbstractEvalResult;
    import de.prob.animator.domainobjects.FormulaExpand;
    import de.prob.scripting.ClassicalBFactory;
    import de.prob.statespace.Trace;
    
    import org.jetbrains.annotations.NotNull;
    
    import io.github.spencerpark.jupyter.kernel.BaseKernel;
    import io.github.spencerpark.jupyter.kernel.LanguageInfo;
    import io.github.spencerpark.jupyter.messages.DisplayData;
    
    public class ProBKernel extends BaseKernel {
    	private @NotNull Trace trace;
    	
    	@Inject
    	private ProBKernel(final @NotNull ClassicalBFactory classicalBFactory) {
    		super();
    		
    		this.trace = new Trace(classicalBFactory.create("MACHINE repl END").load());
    	}
    	
    	@Override
    	public DisplayData eval(final String expr) {
    		assert expr != null;
    		
    		final AbstractEvalResult result = this.trace.evalCurrent(expr, FormulaExpand.EXPAND);
    		return new DisplayData(result.toString());
    	}
    	
    	@Override
    	public LanguageInfo getLanguageInfo() {
    		return new LanguageInfo.Builder("prob")
    			.mimetype("text/x-prob")
    			.fileExtension(".prob")
    			.build();
    	}
    	
    	@Override
    	public void onShutdown(final boolean isRestarting) {
    		this.trace.getStateSpace().kill();
    	}
    }