schaefer 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.DS_Store +0 -0
- data/Examples/.DS_Store +0 -0
- data/Examples/{exampleAdd.sch → Arithmatic/exampleAdd.sch} +0 -0
- data/Examples/Arithmatic/exampleDivision.sch +1 -0
- data/Examples/{exampleMultipy.sch → Arithmatic/exampleMultipy.sch} +0 -0
- data/Examples/Arithmatic/exampleSubtraction.sch +1 -0
- data/Examples/Commenting/exampleComment.sch +12 -0
- data/Examples/FlowControl/exampleDo.sch +18 -0
- data/Examples/FlowControl/exampleGreater.sch +17 -0
- data/Examples/FlowControl/exampleIf.sch +18 -0
- data/Examples/FlowControl/exampleLesser.sch +13 -0
- data/Examples/Functions/exampleFunction.sch +18 -0
- data/Examples/Functions/exampleFunction2.sch +10 -0
- data/Examples/Input:Output/exampleDisplay.sch +6 -0
- data/Examples/Input:Output/exampleInput.sch +13 -0
- data/Examples/Input:Output/exampleWrite.sch +6 -0
- data/Examples/Lists/exampleAppend.sch +9 -0
- data/Examples/Lists/exampleConstruct.sch +27 -0
- data/Examples/Lists/exampleLength.sch +9 -0
- data/Examples/Lists/exampleList.sch +7 -0
- data/Examples/Lists/exampleListFirst.sch +10 -0
- data/Examples/Lists/exampleQuote.sch +7 -0
- data/Examples/Lists/exampleShift.sch +11 -0
- data/Examples/Lists/exampleUnshift.sch +18 -0
- data/Examples/Practical/each.sch +22 -0
- data/Examples/Practical/fib.sch +44 -0
- data/bin/.DS_Store +0 -0
- data/bin/{schaefer → schaefers} +0 -0
- data/lib/schaefer/Library/append.sch +6 -0
- data/lib/schaefer/Library/comment.sch +5 -0
- data/lib/schaefer/Library/construct.sch +13 -0
- data/lib/schaefer/Library/display.sch +1 -1
- data/lib/schaefer/Library/divisionOperator.sch +7 -0
- data/lib/schaefer/Library/isgreater.sch +3 -1
- data/lib/schaefer/Library/length.sch +7 -0
- data/lib/schaefer/Library/list.sch +8 -0
- data/lib/schaefer/Library/listFirst.sch +7 -0
- data/lib/schaefer/Library/quote.sch +6 -0
- data/lib/schaefer/Library/shift.sch +7 -0
- data/lib/schaefer/Library/subtractionOperator.sch +7 -0
- data/lib/schaefer/Library/tonum.sch +6 -0
- data/lib/schaefer/Library/tostr.sch +6 -0
- data/lib/schaefer/Library/unshift.sch +11 -0
- data/lib/schaefer/Library/write.sch +1 -1
- data/lib/schaefer/interpreter.rb +3 -2
- data/lib/schaefer/parser.rb +59 -4
- data/lib/schaefer/version.rb +1 -1
- metadata +43 -24
- data/Examples/exampleDisplay.sch +0 -1
- data/Examples/exampleDo.sch +0 -8
- data/Examples/exampleFunction.sch +0 -11
- data/Examples/exampleFunction2.sch +0 -4
- data/Examples/exampleGets.sch +0 -7
- data/Examples/exampleGreater.sch +0 -7
- data/Examples/exampleIf.sch +0 -12
- data/Examples/exampleLesser.sch +0 -6
- data/Examples/exampleWrite.sch +0 -1
data/.DS_Store
CHANGED
Binary file
|
data/Examples/.DS_Store
CHANGED
Binary file
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
(write (/ (/ 100 2) 2))
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
(write (- (- 100 (- 100 50) 25) 20))
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Commenting can be acheaved by simply typing outside of parenthesees. There
|
2
|
+
are a few things to be careful of though. Commas and some other symbols are
|
3
|
+
not yet recognized in the parser so they return wierd values. This will be
|
4
|
+
fixed in the next release. Also be careful not to include any parenthasees
|
5
|
+
because otherwise they will be interpreted as commands!
|
6
|
+
|
7
|
+
|
8
|
+
(define test
|
9
|
+
(function ()
|
10
|
+
(## When inside of parenthasees just use the double hash)
|
11
|
+
(write "hello")))
|
12
|
+
(test)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
Do is a function that steps through a list of commands. In some functions such as if as seen below
|
2
|
+
a number of commands must be executed within a single set of parenthasees. This task is accomplished
|
3
|
+
with the do function.
|
4
|
+
_____________________________________________________________________________________________________
|
5
|
+
|
6
|
+
|
7
|
+
(define one 1)
|
8
|
+
(define won 1)
|
9
|
+
|
10
|
+
(if (equal? one won)
|
11
|
+
(do
|
12
|
+
(display "1 and 1 are equal")
|
13
|
+
(write " and thats a fact"))
|
14
|
+
(write "1 and 1 are not equal!"))
|
15
|
+
|
16
|
+
|
17
|
+
-------------------------------------------------------------------------------------
|
18
|
+
This example will return "1 and 1 are equal and thats a fact" followed by a new line.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
The isGreater? function allows you to test weather one number is greater than the other.
|
2
|
+
The greater check takes two arguments and compares the first to the seccond.
|
3
|
+
----------------------------------------------------------------------------------------
|
4
|
+
|
5
|
+
|
6
|
+
(define one 1)
|
7
|
+
(define two 2)
|
8
|
+
|
9
|
+
(if(isGreater? one two)
|
10
|
+
(write "1 > 2")
|
11
|
+
(write "1 < 2"))
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
-----------------------------------------------------------------------------------------------
|
16
|
+
In this example the correct return is "1 < 2". Because 1 is being compared to 2 isGreater? will
|
17
|
+
return false.
|
@@ -0,0 +1,18 @@
|
|
1
|
+
The if function takes three arguments. The first is the comparison which will either return
|
2
|
+
true or false. The seccond is the true case which will be executed if the result of the
|
3
|
+
comparison is true. And the last is the false case which will be executed if the result
|
4
|
+
of the comparisson is false.
|
5
|
+
--------------------------------------------------------------------------------------------
|
6
|
+
|
7
|
+
|
8
|
+
(define one 1)
|
9
|
+
(define won 1)
|
10
|
+
(define two 2)
|
11
|
+
|
12
|
+
(if (= one won)
|
13
|
+
(write "1 = 1")
|
14
|
+
(write "1 != 1"))
|
15
|
+
|
16
|
+
(if (equal? one two)
|
17
|
+
(write "1 = 2")
|
18
|
+
(write "1 != 2"))
|
@@ -0,0 +1,13 @@
|
|
1
|
+
The isLesser? is a comparitive function that takes two arguments.
|
2
|
+
TIf the first is lesser than the seccond the function will return
|
3
|
+
true and if the first is greater than the seccond the function
|
4
|
+
will return false
|
5
|
+
------------------------------------------------------------------
|
6
|
+
|
7
|
+
|
8
|
+
(define one 1)
|
9
|
+
(define two 2)
|
10
|
+
|
11
|
+
(if(isLesser? one two)
|
12
|
+
(write "1 < 2")
|
13
|
+
(write "1 > 2"))
|
@@ -0,0 +1,18 @@
|
|
1
|
+
The function function has many uses. When passed no variables it can be used
|
2
|
+
to make your definition executable and allowing loops. In this example you
|
3
|
+
are prompted to enter a password until you answer correctly. This demonstrates
|
4
|
+
using empty functions to generate loops and executable definitions.
|
5
|
+
-------------------------------------------------------------------------------
|
6
|
+
|
7
|
+
|
8
|
+
(define program
|
9
|
+
(function ()
|
10
|
+
(display "Enter password (Hint its password): ")
|
11
|
+
(define response (input))
|
12
|
+
(if (= response "password")
|
13
|
+
(write "Great Job!")
|
14
|
+
(do
|
15
|
+
(write "Im sorry. Thats incorrect!")
|
16
|
+
(program)))))
|
17
|
+
|
18
|
+
(program)
|
@@ -0,0 +1,10 @@
|
|
1
|
+
This example demonstrates how functions can be used by passing them arguments.
|
2
|
+
Using functions in this mannor allows you to create new functions much like
|
3
|
+
some that define this language!
|
4
|
+
------------------------------------------------------------------------------
|
5
|
+
|
6
|
+
|
7
|
+
(define double
|
8
|
+
(function (x) (+ x x)))
|
9
|
+
|
10
|
+
(write (double 5))
|
@@ -0,0 +1,13 @@
|
|
1
|
+
The input command takes no arguments. In allows for user input up until a newline
|
2
|
+
is detected. The function then returns a string of the input excluding the newline
|
3
|
+
character.
|
4
|
+
----------------------------------------------------------------------------------
|
5
|
+
|
6
|
+
|
7
|
+
(display "Enter password (Hint: its password): ")
|
8
|
+
(define result (input))
|
9
|
+
|
10
|
+
(if(= result "password")
|
11
|
+
(write "Excellent!")
|
12
|
+
(write "Wrong!"))
|
13
|
+
|
@@ -0,0 +1,6 @@
|
|
1
|
+
The write command is nearly identical to the display command. It takes one argument then evaluates
|
2
|
+
that argument and displays it to the screen with a trailing newline.
|
3
|
+
--------------------------------------------------------------------------------------------------
|
4
|
+
|
5
|
+
|
6
|
+
(write "hello")
|
@@ -0,0 +1,9 @@
|
|
1
|
+
The append command takes an unlimited ammount of arguments. It works by constructing
|
2
|
+
a single list given multiple in the same order that they are specified.
|
3
|
+
------------------------------------------------------------------------------------
|
4
|
+
|
5
|
+
|
6
|
+
(define l1 (quote (1 2 3 4 5)))
|
7
|
+
(define l2 (quote (6 7 8 9 0)))
|
8
|
+
|
9
|
+
(write (append l1 l2))
|
@@ -0,0 +1,27 @@
|
|
1
|
+
Construct takes two arguments. By performing a construct argument 1 is placed before argument 3
|
2
|
+
and the result is not flattened. This has the effect of creating multi-dimensional arrays. Notice
|
3
|
+
that the length reflects the number of elements with a sub-list contributing one.
|
4
|
+
-------------------------------------------------------------------------------------------------
|
5
|
+
|
6
|
+
|
7
|
+
(define list1 (list 1 2 3 4 5))
|
8
|
+
(define list2 (list 6 7 8 9 0))
|
9
|
+
|
10
|
+
(display "List1: ")
|
11
|
+
(write list1)
|
12
|
+
|
13
|
+
(display "List2: ")
|
14
|
+
(write list2)
|
15
|
+
|
16
|
+
(define ap (append list1 list2))
|
17
|
+
(define con (construct list1 list2))
|
18
|
+
|
19
|
+
(display "Appended List1-List2: ")
|
20
|
+
(display ap)
|
21
|
+
(display " -Length: ")
|
22
|
+
(write (length ap))
|
23
|
+
|
24
|
+
(display "Constructed List1-List2: ")
|
25
|
+
(display con)
|
26
|
+
(display " -Length: ")
|
27
|
+
(write (length con))
|
@@ -0,0 +1,9 @@
|
|
1
|
+
The length function takes one argument. The argument is then evaluated
|
2
|
+
and the length of the list is returned.
|
3
|
+
----------------------------------------------------------------------
|
4
|
+
|
5
|
+
|
6
|
+
(define l1 (list 0 1 2 3 4 5 6 7))
|
7
|
+
(define l2 (list 8 9 10))
|
8
|
+
|
9
|
+
(write (length (append l1 l2)))
|
@@ -0,0 +1,7 @@
|
|
1
|
+
A list is a data type similar to an array in that it is a grouping of values
|
2
|
+
but different in that they are not tied to any keys. When lists are created
|
3
|
+
with the list function each element is evaluated before it is stored.
|
4
|
+
----------------------------------------------------------------------------
|
5
|
+
|
6
|
+
|
7
|
+
(write (list 1 2 3 4 5))
|
@@ -0,0 +1,10 @@
|
|
1
|
+
The listFirst command takes one list as an argument. It then returns the first element
|
2
|
+
of the provided list.
|
3
|
+
--------------------------------------------------------------------------------------
|
4
|
+
|
5
|
+
|
6
|
+
(define l1 (quote (1 2 3 4 5)))
|
7
|
+
|
8
|
+
(write l1)
|
9
|
+
(display "First: ")
|
10
|
+
(write (listFirst l1))
|
@@ -0,0 +1,7 @@
|
|
1
|
+
By using quote you can create lists without evaluating each element. When you create a list
|
2
|
+
using the list keyword each element is evaluated and symbols are interpreted as variables.
|
3
|
+
By quoting the contents of a list are not evaluated and symbols are left unevaluated.
|
4
|
+
--------------------------------------------------------------------------------------------
|
5
|
+
|
6
|
+
|
7
|
+
(write (quote (1 2 3 4 5 bob)))
|
@@ -0,0 +1,11 @@
|
|
1
|
+
The shift function takes one list as the argument. The function removes the first element from
|
2
|
+
the list and returns the list again. A combination of listFirst and shift can be used to get
|
3
|
+
a different values from a list.
|
4
|
+
-----------------------------------------------------------------------------------------------
|
5
|
+
|
6
|
+
|
7
|
+
(define l1 (list 1 2 3 4 5))
|
8
|
+
(display "List: ")
|
9
|
+
(write l1)
|
10
|
+
(display "List Post-Shift: ")
|
11
|
+
(write (shift l1))
|
@@ -0,0 +1,18 @@
|
|
1
|
+
The unshift function takes an unlimited number of arguments. The unshift function
|
2
|
+
takes an array provided in argument 1 and evaluates the subsequent arguments. It
|
3
|
+
then adds the result before the first list in the order they were provided and
|
4
|
+
then flattens the list. Eg. Argument 1 is the list 1 2 3. Argument 2 is the list
|
5
|
+
3 4 5. Argument 3 is 5 6 7. The list resulting from unshifting under these conditions
|
6
|
+
would be 3 4 5 5 6 7 1 2 3.
|
7
|
+
-------------------------------------------------------------------------------------
|
8
|
+
|
9
|
+
|
10
|
+
(define list1 (list -4 -3 -2 -1 0))
|
11
|
+
(define list2 (list 1 2 3 4 5))
|
12
|
+
(define list3 (list 6 7 8 9 10))
|
13
|
+
|
14
|
+
(display "Append: ")
|
15
|
+
(write (append list1 list2 list3))
|
16
|
+
|
17
|
+
(display "Unshift: ")
|
18
|
+
(write (unshift list3 list1 list2))
|
@@ -0,0 +1,22 @@
|
|
1
|
+
THe each example demonstrates how a typical array-each would be written in
|
2
|
+
SchaeferScript. Rather that just writing the element that you are currently
|
3
|
+
at you could do any task.
|
4
|
+
---------------------------------------------------------------------------
|
5
|
+
|
6
|
+
|
7
|
+
(define i 0)
|
8
|
+
(define offset 0)
|
9
|
+
(define li (list 1 2 3 4 5 6))
|
10
|
+
|
11
|
+
(define each
|
12
|
+
(function (lis)
|
13
|
+
(if (= (+ (length lis) offset) i)
|
14
|
+
(display "")
|
15
|
+
(do
|
16
|
+
(write (listFirst lis))
|
17
|
+
(define lis (shift lis))
|
18
|
+
(define i (+ i 1))
|
19
|
+
(define offset (+ offset 1))
|
20
|
+
(each lis)))))
|
21
|
+
|
22
|
+
(each li)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
(define i 0)
|
2
|
+
(define p 0)
|
3
|
+
(define c 1)
|
4
|
+
|
5
|
+
(define test
|
6
|
+
(function (x)
|
7
|
+
(if(= i x)
|
8
|
+
(do
|
9
|
+
(define i 0)
|
10
|
+
(define p 0)
|
11
|
+
(define c 1)
|
12
|
+
)
|
13
|
+
(do
|
14
|
+
(define np c)
|
15
|
+
(define nc (+ p c))
|
16
|
+
(define p np)
|
17
|
+
(define c nc)
|
18
|
+
(write c)
|
19
|
+
(define i (+ i 1))
|
20
|
+
(test x)
|
21
|
+
)
|
22
|
+
)
|
23
|
+
)
|
24
|
+
)
|
25
|
+
|
26
|
+
(define run
|
27
|
+
(function ()
|
28
|
+
(do
|
29
|
+
(write "How many Fibbonocci numbers would you like me to calculate?")
|
30
|
+
(display ">> ")
|
31
|
+
(define num (input))
|
32
|
+
(if (= num "exit")
|
33
|
+
(write "")
|
34
|
+
(do
|
35
|
+
(define num (->num num))
|
36
|
+
(test num)
|
37
|
+
(run)
|
38
|
+
)
|
39
|
+
)
|
40
|
+
)
|
41
|
+
)
|
42
|
+
)
|
43
|
+
|
44
|
+
(run)
|
data/bin/.DS_Store
CHANGED
File without changes
|
data/bin/{schaefer → schaefers}
RENAMED
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
(define construct
|
2
|
+
(native_function "
|
3
|
+
Proc.new() do |arguments, interpreter|
|
4
|
+
arg_1 = interpreter.evaluate(arguments[0])
|
5
|
+
arg_2 = interpreter.evaluate(arguments[1]).dup
|
6
|
+
|
7
|
+
if arg_2.is_a? Array
|
8
|
+
arg_2.unshift arg_1
|
9
|
+
else
|
10
|
+
[arg_1, arg_2]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
"))
|
@@ -0,0 +1,11 @@
|
|
1
|
+
(define unshift
|
2
|
+
(native_function "
|
3
|
+
Proc.new do |arguments, interpreter|
|
4
|
+
arg1 = interpreter.evaluate(arguments[0])
|
5
|
+
newargs = arguments.slice(1, arguments.length)
|
6
|
+
newargs.reverse_each do |argument|
|
7
|
+
arg1.unshift(interpreter.evaluate(argument))
|
8
|
+
end
|
9
|
+
arg1.flatten
|
10
|
+
end
|
11
|
+
"))
|
data/lib/schaefer/interpreter.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
module Schaefer
|
2
2
|
class Interpreter
|
3
|
-
attr_accessor :base_environment, :current_environment
|
3
|
+
attr_accessor :base_environment, :current_environment, :parser
|
4
4
|
|
5
5
|
def initialize()
|
6
6
|
@base_environment = @current_environment = Schaefer::Environment.new
|
7
|
+
@parser = Parser.new
|
7
8
|
loadLibrary
|
8
9
|
end
|
9
10
|
|
10
11
|
def run(program)
|
11
|
-
|
12
|
+
expressions = @parser.parse(program)
|
12
13
|
result = nil
|
13
14
|
expressions.each do |expression|
|
14
15
|
result = evaluate(expression)
|
data/lib/schaefer/parser.rb
CHANGED
@@ -12,10 +12,21 @@ class Parser
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def tokenize(string) #method used split program into tokens by adding spaces arround '('s and calling string.split(' ')
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
numOpen = string.count("(")
|
16
|
+
numClose = string.count(")")
|
17
|
+
numMissing = 0
|
18
|
+
if numOpen > numClose
|
19
|
+
numMissing = numOpen - numClose
|
20
|
+
raise RuntimeError, "#{numMissing} missing close parenthasees"
|
21
|
+
elsif numClose > numOpen
|
22
|
+
numMissing = numClose - numOpen
|
23
|
+
raise RuntimeError, "#{numMissing} extra close parenthasees"
|
24
|
+
elsif numClose == numOpen
|
25
|
+
string = string.gsub("(", " ( ")
|
26
|
+
string = string.gsub(")", " ) ")
|
27
|
+
tokens = string.split(" ")
|
28
|
+
return tokens
|
29
|
+
end
|
19
30
|
end
|
20
31
|
|
21
32
|
def replaceSLiterals(tokens, literals) #method used to restore string literals in our tokens array now that we dont have to worry about special cases
|
@@ -83,5 +94,49 @@ class Parser
|
|
83
94
|
structure = formStructure(tokens)[1]
|
84
95
|
return structure
|
85
96
|
end
|
97
|
+
|
98
|
+
def convertLiterals(data)
|
99
|
+
return recursiveMap(data) do |x|
|
100
|
+
case x
|
101
|
+
when nil then []
|
102
|
+
when true then :"#t"
|
103
|
+
when false then :"#f"
|
104
|
+
else x
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# Convert a set of nested arrays back into an S-Expression
|
110
|
+
def toToken(data)
|
111
|
+
data = convertLiterals(data)
|
112
|
+
if(data.is_a?(Array))
|
113
|
+
mapped = data.map do |item|
|
114
|
+
if(item.is_a?(Array))
|
115
|
+
toToken(item)
|
116
|
+
else
|
117
|
+
item.to_s
|
118
|
+
end
|
119
|
+
end
|
120
|
+
"(" + mapped.join(" ") + ")"
|
121
|
+
else
|
122
|
+
data.to_s
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
private
|
127
|
+
|
128
|
+
def recursiveMap(data, &block)
|
129
|
+
if(data.is_a?(Array))
|
130
|
+
return data.map do |x|
|
131
|
+
if(x.is_a?(Array))
|
132
|
+
recursiveMap(x, &block)
|
133
|
+
else
|
134
|
+
block.call(x)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
else
|
138
|
+
block.call(data)
|
139
|
+
end
|
140
|
+
end
|
86
141
|
end
|
87
142
|
|
data/lib/schaefer/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schaefer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tommy Schaefer
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-05-
|
18
|
+
date: 2012-05-29 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: Schaefer is a small programming language deigned to show how to build a programming language. Running the command 'schaefer' begins console based execution of code and passing a file name will execute the file. SchaeferScript is a scheme-style language where the core functions are written in ruby and other functions written in the language itself. You can access the source for SchaeferScript at https://github.com/tommyschaefer/SchaeferScript.
|
@@ -23,7 +23,7 @@ email:
|
|
23
23
|
- me@tommyschaefer.net
|
24
24
|
executables:
|
25
25
|
- .DS_Store
|
26
|
-
-
|
26
|
+
- schaefers
|
27
27
|
extensions: []
|
28
28
|
|
29
29
|
extra_rdoc_files: []
|
@@ -33,35 +33,47 @@ files:
|
|
33
33
|
- .gitignore
|
34
34
|
- .gitignore~
|
35
35
|
- Examples/.DS_Store
|
36
|
-
- Examples/exampleAdd.sch
|
37
|
-
- Examples/
|
38
|
-
- Examples/
|
39
|
-
- Examples/
|
40
|
-
- Examples/
|
41
|
-
- Examples/exampleDo.sch
|
42
|
-
- Examples/
|
43
|
-
- Examples/
|
44
|
-
- Examples/
|
45
|
-
- Examples/
|
46
|
-
- Examples/
|
47
|
-
- Examples/
|
48
|
-
- Examples/
|
49
|
-
- Examples/exampleWrite.sch
|
50
|
-
- Examples/
|
36
|
+
- Examples/Arithmatic/exampleAdd.sch
|
37
|
+
- Examples/Arithmatic/exampleDivision.sch
|
38
|
+
- Examples/Arithmatic/exampleMultipy.sch
|
39
|
+
- Examples/Arithmatic/exampleSubtraction.sch
|
40
|
+
- Examples/Commenting/exampleComment.sch
|
41
|
+
- Examples/FlowControl/exampleDo.sch
|
42
|
+
- Examples/FlowControl/exampleGreater.sch
|
43
|
+
- Examples/FlowControl/exampleIf.sch
|
44
|
+
- Examples/FlowControl/exampleLesser.sch
|
45
|
+
- Examples/Functions/exampleFunction.sch
|
46
|
+
- Examples/Functions/exampleFunction2.sch
|
47
|
+
- Examples/Input:Output/exampleDisplay.sch
|
48
|
+
- Examples/Input:Output/exampleInput.sch
|
49
|
+
- Examples/Input:Output/exampleWrite.sch
|
50
|
+
- Examples/Lists/exampleAppend.sch
|
51
|
+
- Examples/Lists/exampleConstruct.sch
|
52
|
+
- Examples/Lists/exampleLength.sch
|
53
|
+
- Examples/Lists/exampleList.sch
|
54
|
+
- Examples/Lists/exampleListFirst.sch
|
55
|
+
- Examples/Lists/exampleQuote.sch
|
56
|
+
- Examples/Lists/exampleShift.sch
|
57
|
+
- Examples/Lists/exampleUnshift.sch
|
58
|
+
- Examples/Practical/each.sch
|
59
|
+
- Examples/Practical/fib.sch
|
51
60
|
- Gemfile
|
52
61
|
- LICENSE
|
53
62
|
- README.md
|
54
63
|
- Rakefile
|
55
64
|
- bin/.DS_Store
|
56
|
-
- bin/
|
65
|
+
- bin/schaefers
|
57
66
|
- lib/.DS_Store
|
58
67
|
- lib/schaefer.rb
|
59
68
|
- lib/schaefer/.DS_Store
|
60
69
|
- lib/schaefer/.environment.rb.swp
|
61
70
|
- lib/schaefer/Library/.DS_Store
|
62
71
|
- lib/schaefer/Library/additionOperator.sch
|
72
|
+
- lib/schaefer/Library/append.sch
|
73
|
+
- lib/schaefer/Library/comment.sch
|
74
|
+
- lib/schaefer/Library/construct.sch
|
63
75
|
- lib/schaefer/Library/display.sch
|
64
|
-
- lib/schaefer/Library/
|
76
|
+
- lib/schaefer/Library/divisionOperator.sch
|
65
77
|
- lib/schaefer/Library/do.sch
|
66
78
|
- lib/schaefer/Library/do.sch~
|
67
79
|
- lib/schaefer/Library/equalTo.sch
|
@@ -72,13 +84,20 @@ files:
|
|
72
84
|
- lib/schaefer/Library/input.sch
|
73
85
|
- lib/schaefer/Library/isgreater.sch
|
74
86
|
- lib/schaefer/Library/islesser.sch
|
87
|
+
- lib/schaefer/Library/length.sch
|
88
|
+
- lib/schaefer/Library/list.sch
|
89
|
+
- lib/schaefer/Library/listFirst.sch
|
75
90
|
- lib/schaefer/Library/multiplicationOperator.sch
|
91
|
+
- lib/schaefer/Library/quote.sch
|
92
|
+
- lib/schaefer/Library/shift.sch
|
93
|
+
- lib/schaefer/Library/subtractionOperator.sch
|
94
|
+
- lib/schaefer/Library/tonum.sch
|
95
|
+
- lib/schaefer/Library/tostr.sch
|
96
|
+
- lib/schaefer/Library/unshift.sch
|
76
97
|
- lib/schaefer/Library/write.sch
|
77
|
-
- lib/schaefer/Library/write.sch~
|
78
98
|
- lib/schaefer/environment.rb
|
79
99
|
- lib/schaefer/interpreter.rb
|
80
100
|
- lib/schaefer/parser.rb
|
81
|
-
- lib/schaefer/parser.rb~
|
82
101
|
- lib/schaefer/version.rb
|
83
102
|
- schaefer.gemspec
|
84
103
|
homepage: https://github.com/tommyschaefer/SchaeferScript
|
data/Examples/exampleDisplay.sch
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
(display "hello")
|
data/Examples/exampleDo.sch
DELETED
data/Examples/exampleGets.sch
DELETED
data/Examples/exampleGreater.sch
DELETED
data/Examples/exampleIf.sch
DELETED
data/Examples/exampleLesser.sch
DELETED
data/Examples/exampleWrite.sch
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
(write "hello")
|