Exemplo n.º 1
0
/* Build Object */
ClassStatement* buildObject() {
  FeatureList* methods = new FeatureList();
  methods->add(new FeatureOption(new FormalDeclare(new Id(new string("vtable")), new Type(new string("Int64")))));
  methods->add(new FeatureOption(new Feature(new Id(new string("abort")), new ListFormalDeclare(), new Type(new string("Object")), new ExprList())));
  methods->add(new FeatureOption(new Feature(new Id(new string("type_name")), new ListFormalDeclare(), new Type(new string("SELF_TYPE")), new ExprList())));
  methods->add(new FeatureOption(new Feature(new Id(new string("copy")), new ListFormalDeclare(), new Type(new string("SELF_TYPE")), new ExprList())));
  return new ClassStatement(new Type(new string("Object")), nullptr, methods);
}
Exemplo n.º 2
0
ClassStatement* buildIO() {
  FeatureList* methods = new FeatureList();
  ListFormalDeclare* outStringList = new ListFormalDeclare();
  ListFormalDeclare* outIntList = new ListFormalDeclare();

  outStringList->add(new FormalDeclare(new Id(new string("x")), new Type(new string("String")), nullptr));
  outIntList->add(new FormalDeclare(new Id(new string("x")), new Type(new string("Int")), nullptr));

  methods->add(new FeatureOption(new Feature(new Id(new string("out_string")), outStringList, new Type(new string("SELF_TYPE")), new ExprList())));
  methods->add(new FeatureOption(new Feature(new Id(new string("out_int")),outIntList, new Type(new string("SELF_TYPE")), new ExprList())));
  methods->add(new FeatureOption(new Feature(new Id(new string("in_string")), new ListFormalDeclare(), new Type(new string("String")), new ExprList())));
  methods->add(new FeatureOption(new Feature(new Id(new string("in_int")), new ListFormalDeclare(), new Type(new string("Int")), new ExprList())));
  return new ClassStatement(new Type(new string("IO")), new Type(new string("Object")), methods);
}
Exemplo n.º 3
0
ClassStatement* buildString() {
  FeatureList* methods = new FeatureList();
  ListFormalDeclare* concatParam = new ListFormalDeclare();
  ListFormalDeclare* substrParam = new ListFormalDeclare();

  concatParam->add(new FormalDeclare(new Id(new string("s")), new Type(new string("String")), nullptr));
  substrParam->add(new FormalDeclare(new Id(new string("i")), new Type(new string("Int")), nullptr));
  substrParam->add(new FormalDeclare(new Id(new string("l")), new Type(new string("Int")), nullptr));

  methods->add(new FeatureOption(new FormalDeclare(new Id(new string("theString")), new Type(new string("Bool")))));
  methods->add(new FeatureOption(new Feature(new Id(new string("length")), new ListFormalDeclare(), new Type(new string("Int")), new ExprList())));
  methods->add(new FeatureOption(new Feature(new Id(new string("concat")), concatParam, new Type(new string("String")), new ExprList())));
  methods->add(new FeatureOption(new Feature(new Id(new string("substr")), substrParam, new Type(new string("String")), new ExprList())));
  return new ClassStatement(new Type(new string("String")), new Type(new string("Object")), methods, true);
}
Exemplo n.º 4
0
ClassStatement* buildConvert() {
  FeatureList* methods = new FeatureList();

  const char * const types[] = { "Int", "Int64", "Int32", "Int8", "Float" };
  for(string type : types) {
    methods->add(buildConvertFunc(type));
  }

  return new ClassStatement(new Type(new string("Convert")), new Type(new string("Object")), methods, true);
}