Syntax Ideas


Expression/Type Syntax

  int       : 32bit signed int
  char      : 8bit unsigned 

  Number    : arbitrary precision number
  str       : character aggregate type

  int[,]    : two dimensional array
  int[,][]  : two dimensional array of one dimensional arrays

  List<int> : list of integers


Python style


import sys

# imported from sys
# defmacro(expression) print <expression x> :
#   sys.stdout.print(x)

def int a_function(int number,str name):
  if name == "Fred":
    return number
  else:
    return number -1

def (str first,str last) split_name(str a_name,str on=" "):
  pieces = a_name.split(on)
  return (pieces[0],pieces[1])


print split_name("David Jeske").first


Objective-C style


import sys;
// imported from sys
// macro(expression) print <expression x> : [sys.stdout print:x]

- (int)a_function: (int) number withName: (str) name 
{
  if (name == fred) {
    return number;
  } else {
    return number - 1;
  }
}

- (str first,str last) split_name: (str) a_name on: (str) on=""
{
  pieces = [a_name splitOn:on];
  return (pieces[0],pieces[1]);
}

print [. split_name:"David Jeske"].first;


C++/C#/Java style


import sys;
// imported from sys
// macro(expression) print <expression x> : sys.stdout.print(x)

int a_function(int number,str name) {
  if (name == fred) {
    return number;
  } else {
    return number - 1;
  }
}

struct {str first,str last} split_name(str a_name,str on="") {
  pieces = a_name.split(on);
  return {pieces[0],pieces[1]};
}


print split_name("David Jeske").first;

// an example of using the macro/syntax system for a new pre-initialized data syntax
//
// macro(hash_element) key<expression:Hashable> ":" val<expression> :  ( key, val );
// macro(list_of_elements) <hash_element> "," <list_of_elements> : list_of_elements.append(hash_element)
//                      | <hash_element last_element> : [ last_element ];
// macro(expression) "{" <list_of_elements> "}" : new HashTable(list_of_elements);
//
// usage:
//    HashTable h = { 'a' : 1, 'b' : 2 };