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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c3acce51fa7eec449751f02bba7325fae7ef52c3bff31c6613ffb4850718d60
4
- data.tar.gz: ff07ae63b600f20e2922e9241fb74dd4aafc041570227f6fbcb7a35e7d54d59d
3
+ metadata.gz: 213907cdd00229e60f474d6d67e4daf5b7a3b1ce67b0a7f9973cae5aa83854f2
4
+ data.tar.gz: 91bd1c91592074ee6688f37daa37e4e188ddd8b5b2b302740b7dcbd60ad60af4
5
5
  SHA512:
6
- metadata.gz: b9f08680ca2a5c03067793421c2d22bb786a5bc38a600fa40495a9d28bdc9a8e228183b9f1af696bef11a286b8ae040ed121bb676354e2cf07c701c570181e11
7
- data.tar.gz: bdbcfad01d5c039a6dade2c099ba460f1b8eaf698494c60703a43a400516ce607d6146250ffffaca7e0793bfb22b92012fa6e435270760ae0e43a70392c834a3
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 "1.1*"
33
- 5
34
- 5.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
@@ -23,6 +23,13 @@ module Ascode
23
23
  @stack.pop
24
24
  end
25
25
  end
26
+
27
+ def swap
28
+ a = pop false
29
+ b = pop false
30
+ push a
31
+ push b
32
+ end
26
33
  end
27
34
  end
28
35
  end
@@ -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
@@ -11,8 +11,9 @@ module Ascode
11
11
  read_csv file
12
12
  end
13
13
 
14
- @csv_data.delete_at 0
15
- @csv_data.delete_at 0
14
+ @csv_data.delete_if do |e|
15
+ e[:short].nil? || e[:short].to_s.length > 1
16
+ end
16
17
  end
17
18
 
18
19
  def parse(char)
@@ -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
- `[`|`condition`|`begin`|`a`|| If `a` = `0`, `nil` or `false`, then part after `:` is executed
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`
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ascode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Varaksa