ascode 0.5.5 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/lib/ascode/interpreter/environment.rb +7 -0
- data/lib/ascode/interpreter/math.rb +18 -0
- data/lib/ascode/parser/function.rb +3 -2
- data/lib/ascode/parser/functions.md +23 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 213907cdd00229e60f474d6d67e4daf5b7a3b1ce67b0a7f9973cae5aa83854f2
|
4
|
+
data.tar.gz: 91bd1c91592074ee6688f37daa37e4e188ddd8b5b2b302740b7dcbd60ad60af4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71fca1e21167ad4626dd16e703c046021b0c318a453bc80f59dcbfffe66356a6b245caed879692105ae1c6c6840dc951243e952dadd5ade870ff4609c4b2a7c9
|
7
|
+
data.tar.gz: 07f068c484bc3060aba51694c125819f08532669a5ff502465983d67bb76622c8af33a451762c2f7a8d0fc55e99160783381de10aa5f005dc72455483c174de1
|
data/README.md
CHANGED
@@ -29,9 +29,10 @@ irb(main):001:0> require "ascode"
|
|
29
29
|
irb(main):002:0> Ascode.run '"Number: "Oe["Even":"Odd"]O'
|
30
30
|
Number: 10
|
31
31
|
Even
|
32
|
-
irb(main):003:0> Ascode.run "
|
33
|
-
|
34
|
-
5
|
32
|
+
irb(main):003:0> Ascode.run '"A: "OI"B: "OIS>["A > B":"A <= B"]O'
|
33
|
+
A: 10
|
34
|
+
B: 5
|
35
|
+
A > B
|
35
36
|
```
|
36
37
|
|
37
38
|
### Features
|
@@ -25,6 +25,24 @@ module Ascode
|
|
25
25
|
env.push a * b
|
26
26
|
end
|
27
27
|
|
28
|
+
def self.bigger_than(env)
|
29
|
+
a = env.pop
|
30
|
+
b = env.pop
|
31
|
+
env.push a > b ? 1 : 0
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.less_than(env)
|
35
|
+
a = env.pop
|
36
|
+
b = env.pop
|
37
|
+
env.push a < b ? 1 : 0
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.equal(env)
|
41
|
+
a = env.pop
|
42
|
+
b = env.pop
|
43
|
+
env.push a == b ? 1 : 0
|
44
|
+
end
|
45
|
+
|
28
46
|
def self.even(env)
|
29
47
|
env.push env.pop.even? ? 1 : 0
|
30
48
|
end
|
@@ -1,16 +1,37 @@
|
|
1
|
+
#### IO
|
2
|
+
|
1
3
|
Character|Type|Name|`pop`s|`push`es|Description
|
2
4
|
---|---|---|---|---|---
|
3
5
|
`I`|`io`|`input`||`a`|`stdin` -> `a`
|
4
6
|
`O`|`io`|`output`|`a`||`a` -> `stdout`
|
5
7
|
`N`|`io`|`new_line`|||`\n` -> `stdout`
|
8
|
+
|
9
|
+
#### Environment
|
10
|
+
|
11
|
+
Character|Type|Name|`pop`s|`push`es|Description
|
12
|
+
---|---|---|---|---|---
|
6
13
|
`P`|`env`|`pop`|`a`||
|
7
|
-
`
|
14
|
+
`S`|`env`|`swap`|`a`, `b`|`a`, `b`|Swaps first two elements in the stack
|
15
|
+
|
16
|
+
#### Condition
|
17
|
+
|
18
|
+
Character|Type|Name|`pop`s|`push`es|Description
|
19
|
+
---|---|---|---|---|---
|
20
|
+
`[`|`condition`|`begin`|`a`|| Condition is false if `a` = `0` or `false`
|
8
21
|
`:`|`condition`|`else`|||
|
9
|
-
`]`|`condition`|`end`|||
|
22
|
+
`]`|`condition`|`end`|||
|
23
|
+
|
24
|
+
#### Math
|
25
|
+
|
26
|
+
Character|Type|Name|`pop`s|`push`es|Description
|
27
|
+
---|---|---|---|---|---
|
10
28
|
`+`|`math`|`plus`|`a`, `b`|`c`|`c` = `a` + `b`
|
11
29
|
`-`|`math`|`minus`|`a`, `b`|`c`|`c` = `a` - `b`
|
12
30
|
`/`|`math`|`divide`|`a`, `b`|`c`|`c` = `a` / `b`
|
13
31
|
`*`|`math`|`multiply`|`a`, `b`|`c`|`c` = `a` * `b`
|
32
|
+
`>`|`math`|`bigger_than`|`a`, `b`|`c`|`c` = `1` if `a` > `b`, `0` otherwise
|
33
|
+
`<`|`math`|`less_than`|`a`, `b`|`c`|`c` = `1` if `a` < `b`, `0` otherwise
|
34
|
+
`=`|`math`|`equal`|`a`, `b`|`c`|`c` = `1` if `a` = `b`, `0` otherwise
|
14
35
|
`e`|`math`|`even`|`a`|`b`|`b` = `1` if `a` is even, `0` otherwise
|
15
36
|
`!`|`math`|`invert`|`a`|`b`|`b` = `1` if `a` = `0`, otherwise `0`
|
16
37
|
`s`|`math`|`change_sign`|`a`|`b`|`b` = `-1` * `a`
|