use of de.be4.classicalb.core.parser.node.APowSubsetExpression in project probparsers by bendisposto.
the class SetType method createASTNode.
public PExpression createASTNode(Typechecker typechecker) {
APowSubsetExpression node = new APowSubsetExpression(subtype.createASTNode(typechecker));
typechecker.setType(node, this);
return node;
}
use of de.be4.classicalb.core.parser.node.APowSubsetExpression in project probparsers by bendisposto.
the class ASTPrologTest method testFreeType.
@Test
public void testFreeType() throws BCompoundException {
final AConstructorFreetypeConstructor multi = new AConstructorFreetypeConstructor(new TIdentifierLiteral("multi"), new APowSubsetExpression(new AIntegerSetExpression()));
final AConstructorFreetypeConstructor single = new AConstructorFreetypeConstructor(new TIdentifierLiteral("single"), new AIntegerSetExpression());
final AFreetype freetype = new AFreetype(new TIdentifierLiteral("T"), Arrays.<PFreetypeConstructor>asList(multi, single));
AFreetypesMachineClause clause = new AFreetypesMachineClause(Arrays.<PFreetype>asList(freetype));
final StringWriter swriter = new StringWriter();
NodeIdAssignment nodeids = new NodeIdAssignment();
clause.apply(nodeids);
IPrologTermOutput pout = new PrologTermOutput(new PrintWriter(swriter), false);
PositionPrinter pprinter = new ClassicalPositionPrinter(nodeids);
ASTProlog prolog = new ASTProlog(pout, pprinter);
clause.apply(prolog);
String code = swriter.toString();
assertFalse(code.isEmpty());
assertEquals("freetypes(0,[freetype(1,'T',[constructor(2,multi,pow_subset(3,integer_set(4))),constructor(5,single,integer_set(6))])])", code);
}
use of de.be4.classicalb.core.parser.node.APowSubsetExpression in project probparsers by bendisposto.
the class CreateFreetypeTest method createMachine.
private Start createMachine(String name) {
final AFreetypesMachineClause freetypes = createFreetype();
final AConstantsMachineClause variables = new AConstantsMachineClause(createIdentifiers(VAR_NAME));
final AMemberPredicate member = new AMemberPredicate(createIdentifier(VAR_NAME), new APowSubsetExpression(createIdentifier(FREETYPE_NAME)));
final AInvariantMachineClause inv = new AInvariantMachineClause(member);
final AInitialisationMachineClause init = new AInitialisationMachineClause(createAssignment(VAR_NAME, new AEmptySetExpression()));
final AOperationsMachineClause operations = createOperations();
final AMachineHeader header = new AMachineHeader(createIdLits(name), EMPTY_EXPRS);
final AAbstractMachineParseUnit machine = new AAbstractMachineParseUnit(new AMachineMachineVariant(), header, Arrays.asList(freetypes, variables, inv, init, operations));
return new Start(machine, new EOF());
}
use of de.be4.classicalb.core.parser.node.APowSubsetExpression in project probparsers by bendisposto.
the class ASTBuilder method addSortDefinition.
public static void addSortDefinition(IDefinitions iDefinitions) {
if (iDefinitions.containsDefinition(SORT)) {
return;
}
/*- SORT
* SORT(X) == [];
* EXTERNAL_FUNCTION_SORT(T) == POW(T)-->seq(T);
*/
AExpressionDefinitionDefinition sortDef = new AExpressionDefinitionDefinition();
sortDef.setName(new TIdentifierLiteral(SORT));
sortDef.setParameters(createExpressionList("X"));
sortDef.setRhs(new AEmptySequenceExpression());
iDefinitions.addDefinition(sortDef, IDefinitions.Type.Expression);
AExpressionDefinitionDefinition sortType = new AExpressionDefinitionDefinition();
sortType.setName(new TIdentifierLiteral("EXTERNAL_FUNCTION_SORT"));
sortType.setParameters(createExpressionList("T"));
sortType.setRhs(new ATotalFunctionExpression(new APowSubsetExpression(createIdentifier("T")), new ASeqExpression(createIdentifier("T"))));
iDefinitions.addDefinition(sortType, IDefinitions.Type.Expression);
}
use of de.be4.classicalb.core.parser.node.APowSubsetExpression in project probparsers by bendisposto.
the class ASTBuilder method addChooseDefinition.
public static void addChooseDefinition(IDefinitions iDefinitions) {
if (iDefinitions.containsDefinition(CHOOSE)) {
return;
}
/*-
* TO_STRING(S) == "0";
* EXTERNAL_FUNCTION_TO_STRING(X) == (X --> STRING);
*/
AExpressionDefinitionDefinition chooseDef = new AExpressionDefinitionDefinition();
chooseDef.setName(new TIdentifierLiteral(CHOOSE));
chooseDef.setParameters(createIdentifierList("X"));
chooseDef.setRhs(new AStringExpression(new TStringLiteral("a member of X")));
iDefinitions.addDefinition(chooseDef, IDefinitions.Type.Expression);
AExpressionDefinitionDefinition chooseDefType = new AExpressionDefinitionDefinition();
chooseDefType.setName(new TIdentifierLiteral("EXTERNAL_FUNCTION_CHOOSE"));
chooseDefType.setParameters(createIdentifierList("T"));
chooseDefType.setRhs(new ATotalFunctionExpression(new APowSubsetExpression(createIdentifier("T")), createIdentifier("T")));
iDefinitions.addDefinition(chooseDefType, IDefinitions.Type.Expression);
}
Aggregations