E language with samples

This commit is contained in:
Baptiste Fontaine
2014-02-03 15:27:40 +01:00
parent dd32b8f441
commit 0eea2bd7bb
8 changed files with 371 additions and 3 deletions

View File

@@ -476,6 +476,11 @@ Dylan:
color: "#3ebc27"
primary_extension: .dylan
E:
type: programming
color: "#ccce35"
primary_extension: .E
Ecere Projects:
type: data
group: JavaScript

View File

@@ -52,6 +52,9 @@
"Ceylon": [
".ceylon"
],
"Cirru": [
".cirru"
],
"Clojure": [
".cl2",
".clj",
@@ -95,6 +98,9 @@
"DM": [
".dm"
],
"E": [
".E"
],
"ECL": [
".ecl"
],
@@ -535,8 +541,8 @@
".gemrc"
]
},
"tokens_total": 445429,
"languages_total": 523,
"tokens_total": 446274,
"languages_total": 538,
"tokens": {
"ABAP": {
"*/**": 1,
@@ -12715,6 +12721,43 @@
"<=>": 1,
"other.name": 1
},
"Cirru": {
"print": 38,
"array": 14,
"int": 36,
"string": 7,
"set": 12,
"f": 3,
"block": 1,
"(": 20,
"a": 22,
"b": 7,
"c": 9,
")": 20,
"call": 1,
"bool": 6,
"true": 1,
"false": 1,
"yes": 1,
"no": 1,
"map": 8,
"m": 3,
"float": 1,
"require": 1,
"./stdio.cr": 1,
"self": 2,
"child": 1,
"under": 2,
"parent": 1,
"get": 4,
"x": 2,
"just": 4,
"-": 4,
"code": 4,
"eval": 2,
"nothing": 1,
"container": 3
},
"Clojure": {
"(": 83,
"defn": 4,
@@ -16024,6 +16067,160 @@
"#undef": 1,
"Undefine": 1
},
"E": {
"def": 24,
"makeVehicle": 3,
"(": 65,
"self": 1,
")": 64,
"{": 57,
"vehicle": 2,
"to": 27,
"milesTillEmpty": 1,
"return": 19,
"self.milesPerGallon": 1,
"*": 1,
"self.getFuelRemaining": 1,
"}": 57,
"makeCar": 4,
"var": 6,
"fuelRemaining": 4,
"car": 8,
"extends": 2,
"milesPerGallon": 2,
"getFuelRemaining": 2,
"makeJet": 1,
"jet": 3,
"println": 2,
"The": 2,
"can": 1,
"go": 1,
"car.milesTillEmpty": 1,
"miles.": 1,
"name": 4,
"x": 3,
"y": 3,
"moveTo": 1,
"newX": 2,
"newY": 2,
"getX": 1,
"getY": 1,
"setName": 1,
"newName": 2,
"getName": 1,
"sportsCar": 1,
"sportsCar.moveTo": 1,
"sportsCar.getName": 1,
"is": 1,
"at": 1,
"X": 1,
"location": 1,
"sportsCar.getX": 1,
"makeVOCPair": 1,
"brandName": 3,
"String": 1,
"near": 6,
"myTempContents": 6,
"none": 2,
"brand": 5,
"__printOn": 4,
"out": 4,
"TextWriter": 4,
"void": 5,
"out.print": 4,
"ProveAuth": 2,
"<$brandName>": 3,
"prover": 1,
"getBrand": 4,
"coerce": 2,
"specimen": 2,
"optEjector": 3,
"sealedBox": 2,
"offerContent": 1,
"CheckAuth": 2,
"checker": 3,
"template": 1,
"match": 4,
"[": 10,
"get": 2,
"authList": 2,
"any": 2,
"]": 10,
"specimenBox": 2,
"null": 1,
"if": 2,
"specimenBox.__respondsTo": 1,
"specimenBox.offerContent": 1,
"else": 1,
"for": 3,
"auth": 3,
"in": 1,
"throw.eject": 1,
"Unmatched": 1,
"authorization": 1,
"__respondsTo": 2,
"_": 3,
"true": 1,
"false": 1,
"__getAllegedType": 1,
"null.__getAllegedType": 1,
"#File": 1,
"objects": 1,
"hardwired": 1,
"files": 1,
"file1": 1,
"<file:myFile.txt>": 1,
"file2": 1,
"<file:/home/marcs/myFile.txt>": 1,
"#Using": 2,
"a": 4,
"variable": 1,
"file": 3,
"filePath": 2,
"file3": 1,
"<file>": 1,
"single": 1,
"character": 1,
"specify": 1,
"Windows": 1,
"drive": 1,
"file4": 1,
"<file:c:/docs/myFile.txt>": 1,
"file5": 1,
"<c:/docs/myFile.txt>": 1,
"file6": 1,
"<c:\\docs\\myFile.txt>": 1,
"pragma.syntax": 1,
"send": 1,
"message": 4,
"when": 2,
"friend": 4,
"<-receive(message))>": 1,
"chatUI.showMessage": 4,
"catch": 2,
"prob": 2,
"receive": 1,
"receiveFriend": 2,
"friendRcvr": 2,
"bind": 2,
"save": 1,
"file.setText": 1,
"makeURIFromObject": 1,
"chatController": 2,
"load": 1,
"getObjectFromURI": 1,
"file.getText": 1,
"<": 1,
"-": 2,
"tempVow": 2,
"#...use": 1,
"#....": 1,
"report": 1,
"problem": 1,
"finally": 1,
"#....log": 1,
"event": 1
},
"ECL": {
"#option": 1,
"(": 32,
@@ -47799,6 +47996,7 @@
"C#": 278,
"C++": 31181,
"Ceylon": 50,
"Cirru": 244,
"Clojure": 510,
"COBOL": 90,
"CoffeeScript": 2951,
@@ -47810,6 +48008,7 @@
"Dart": 74,
"Diff": 16,
"DM": 169,
"E": 601,
"ECL": 281,
"edn": 227,
"Elm": 628,
@@ -47941,6 +48140,7 @@
"C#": 2,
"C++": 27,
"Ceylon": 1,
"Cirru": 9,
"Clojure": 7,
"COBOL": 4,
"CoffeeScript": 9,
@@ -47952,6 +48152,7 @@
"Dart": 1,
"Diff": 1,
"DM": 1,
"E": 6,
"ECL": 1,
"edn": 1,
"Elm": 3,
@@ -48066,5 +48267,5 @@
"Xtend": 2,
"YAML": 1
},
"md5": "a46f14929a6e9e4356fda95beb035439"
"md5": "09d83474428d52300e1b368b738c226c"
}

31
samples/E/Extends.E Normal file
View File

@@ -0,0 +1,31 @@
# from
# http://wiki.erights.org/wiki/Walnut/Ordinary_Programming/Objects_and_Functions
def makeVehicle(self) {
def vehicle {
to milesTillEmpty() {
return self.milesPerGallon() * self.getFuelRemaining()
}
}
return vehicle
}
def makeCar() {
var fuelRemaining := 20
def car extends makeVehicle(car) {
to milesPerGallon() {return 19}
to getFuelRemaining() {return fuelRemaining}
}
return car
}
def makeJet() {
var fuelRemaining := 2000
def jet extends makeVehicle(jet) {
to milesPerGallon() {return 2}
to getFuelRemaining() {return fuelRemaining}
}
return jet
}
def car := makeCar()
println(`The car can go ${car.milesTillEmpty()} miles.`)

21
samples/E/Functions.E Normal file
View File

@@ -0,0 +1,21 @@
# from
# http://wiki.erights.org/wiki/Walnut/Ordinary_Programming/Objects_and_Functions
def makeCar(var name) {
var x := 0
var y := 0
def car {
to moveTo(newX,newY) {
x := newX
y := newY
}
to getX() {return x}
to getY() {return y}
to setName(newName) {name := newName}
to getName() {return name}
}
return car
}
# Now use the makeCar function to make a car, which we will move and print
def sportsCar := makeCar("Ferrari")
sportsCar.moveTo(10,20)
println(`The car ${sportsCar.getName()} is at X location ${sportsCar.getX()}`)

69
samples/E/Guards.E Normal file
View File

@@ -0,0 +1,69 @@
# from
# http://wiki.erights.org/wiki/Walnut/Advanced_Topics/Build_your_Own_Guards
def makeVOCPair(brandName :String) :near {
var myTempContents := def none {}
def brand {
to __printOn(out :TextWriter) :void {
out.print(brandName)
}
}
def ProveAuth {
to __printOn(out :TextWriter) :void {
out.print(`<$brandName prover>`)
}
to getBrand() :near { return brand }
to coerce(specimen, optEjector) :near {
def sealedBox {
to getBrand() :near { return brand }
to offerContent() :void {
myTempContents := specimen
}
}
return sealedBox
}
}
def CheckAuth {
to __printOn(out :TextWriter) :void {
out.print(`<$brandName checker template>`)
}
to getBrand() :near { return brand }
match [`get`, authList :any[]] {
def checker {
to __printOn(out :TextWriter) :void {
out.print(`<$brandName checker>`)
}
to getBrand() :near { return brand }
to coerce(specimenBox, optEjector) :any {
myTempContents := null
if (specimenBox.__respondsTo("offerContent", 0)) {
# XXX Using __respondsTo/2 here is a kludge
specimenBox.offerContent()
} else {
myTempContents := specimenBox
}
for auth in authList {
if (auth == myTempContents) {
return auth
}
}
myTempContents := none
throw.eject(optEjector,
`Unmatched $brandName authorization`)
}
}
}
match [`__respondsTo`, [`get`, _]] {
true
}
match [`__respondsTo`, [_, _]] {
false
}
match [`__getAllegedType`, []] {
null.__getAllegedType()
}
}
return [ProveAuth, CheckAuth]
}

14
samples/E/IO.E Normal file
View File

@@ -0,0 +1,14 @@
# E sample from
# http://wiki.erights.org/wiki/Walnut/Ordinary_Programming/InputOutput
#File objects for hardwired files:
def file1 := <file:myFile.txt>
def file2 := <file:/home/marcs/myFile.txt>
#Using a variable for a file name:
def filePath := "c:\\docs\\myFile.txt"
def file3 := <file>[filePath]
#Using a single character to specify a Windows drive
def file4 := <file:c:/docs/myFile.txt>
def file5 := <c:/docs/myFile.txt>
def file6 := <c:\docs\myFile.txt>

9
samples/E/Promises.E Normal file
View File

@@ -0,0 +1,9 @@
# E snippet from
# http://wiki.erights.org/wiki/Walnut/Distributed_Computing/Promises
when (tempVow) -> {
#...use tempVow
} catch prob {
#.... report problem
} finally {
#....log event
}

18
samples/E/minChat.E Normal file
View File

@@ -0,0 +1,18 @@
# from
# http://wiki.erights.org/wiki/Walnut/Secure_Distributed_Computing/Auditing_minChat
pragma.syntax("0.9")
to send(message) {
when (friend<-receive(message)) -> {
chatUI.showMessage("self", message)
} catch prob {chatUI.showMessage("system", "connection lost")}
}
to receive(message) {chatUI.showMessage("friend", message)}
to receiveFriend(friendRcvr) {
bind friend := friendRcvr
chatUI.showMessage("system", "friend has arrived")
}
to save(file) {file.setText(makeURIFromObject(chatController))}
to load(file) {
bind friend := getObjectFromURI(file.getText())
friend <- receiveFriend(chatController)
}