SenSpace 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +8 -0
- data/README.md +35 -0
- data/Rakefile +4 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/lib/SenSpace/version.rb +5 -0
- data/lib/SenSpace.rb +199 -0
- metadata +54 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b15352f16f9f4f733c95da9b1c702a05a3164c2cdf04959dd55499c0f8ff028c
|
4
|
+
data.tar.gz: 5f7e7affcd8b8e4ef9b06ee824cbe78623d2af78ad457a3f2099df8ba7196214
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e3931764660a02af34cf6850b574bd6d28a87746295659d6f996db76ad3c21c05a02c86d6aba5448470ea082cb187ecb98870a42231d632fce75a41a7f4102dd
|
7
|
+
data.tar.gz: 954b19b6ff1382884c911f8e82263f8e13efba120b2ac10ec81c7a6225e6bcd03c707b9241a252594d259d18bf99f0ae63cdfab83dffb1610a0485cf02a48788
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# SenSpace
|
2
|
+
|
3
|
+
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/SenSpace`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
+
|
5
|
+
TODO: Delete this and the text above, and describe your gem
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'SenSpace'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle install
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install SenSpace
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
TODO: Write usage instructions here
|
26
|
+
|
27
|
+
## Development
|
28
|
+
|
29
|
+
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
30
|
+
|
31
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
|
+
|
33
|
+
## Contributing
|
34
|
+
|
35
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/SenSpace.
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "bundler/setup"
|
5
|
+
require "SenSpace"
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require "irb"
|
15
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/lib/SenSpace.rb
ADDED
@@ -0,0 +1,199 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "SenSpace/version"
|
4
|
+
|
5
|
+
require "parslet"
|
6
|
+
require "pp"
|
7
|
+
|
8
|
+
module SenSpace
|
9
|
+
class Error < StandardError; end
|
10
|
+
|
11
|
+
class Parser < Parslet::Parser
|
12
|
+
root(:expression)
|
13
|
+
|
14
|
+
rule(:space) { str(" ") }
|
15
|
+
|
16
|
+
rule(:expression) { mojuru >> space >> kurasu >> space >> kansu >> space >> object >> space >> color >> space >> action >> space >> owari }
|
17
|
+
|
18
|
+
rule(:owari) { str("OWARI") }
|
19
|
+
|
20
|
+
# Keywords
|
21
|
+
rule(:mojuru) { str("GRAMMAR") } # >> str(" ") }
|
22
|
+
rule(:kurasu) { str("PHRASE") } # >> str(" ") }
|
23
|
+
rule(:kansu) { str("SAY") } # >> str(" ") }
|
24
|
+
|
25
|
+
# Sentax
|
26
|
+
# rule(:sen) { object | space | color | space | action }
|
27
|
+
|
28
|
+
# Object list
|
29
|
+
rule(:object) { key | chair | macadamia | book }
|
30
|
+
|
31
|
+
rule(:key) { str("cere") }
|
32
|
+
rule(:chair) { str("xase") }
|
33
|
+
rule(:macadamia) { str("makadama") }
|
34
|
+
rule(:book) { str("livere") }
|
35
|
+
|
36
|
+
# Color list
|
37
|
+
rule(:color) { black | white | red | blue | green | orange | brown | yellow | pink }
|
38
|
+
|
39
|
+
rule(:black) { str('nere') }
|
40
|
+
rule(:white) { str('bahene') }
|
41
|
+
rule(:red) { str('rude') }
|
42
|
+
rule(:blue) { str('beru') }
|
43
|
+
rule(:green) { str('vene') }
|
44
|
+
rule(:orange) { str('henije') }
|
45
|
+
rule(:brown) { str('berone') }
|
46
|
+
rule(:yellow) { str('yeru') }
|
47
|
+
rule(:pink) { str('viyete') }
|
48
|
+
|
49
|
+
# Action list
|
50
|
+
rule(:action) { get | cut | unlock | read | sit | recite | adjust | add | bundle }
|
51
|
+
|
52
|
+
rule(:get) { str("eru") }
|
53
|
+
rule(:cut) { str("cupo") }
|
54
|
+
rule(:unlock) { str("uvere") }
|
55
|
+
rule(:read) { str("lisoje") }
|
56
|
+
rule(:sit) { str("asoxi") }
|
57
|
+
rule(:recite) { str("decite") }
|
58
|
+
rule(:adjust) { str("xosfe") }
|
59
|
+
rule(:add) { str("ataxi") }
|
60
|
+
rule(:bundle) { str("konitoru") }
|
61
|
+
end
|
62
|
+
|
63
|
+
class Transform < Parslet::Transform
|
64
|
+
# Simple keywords
|
65
|
+
rule('mojuru') { "GRAMMAR" }
|
66
|
+
rule('kurasu') { "PHRASE" }
|
67
|
+
rule('kansu') { "KANSU" }
|
68
|
+
rule('owari') { "OWARI" }
|
69
|
+
|
70
|
+
# Simple objects
|
71
|
+
rule('key') { "'Cere " }
|
72
|
+
rule('chair') { "'Xase " }
|
73
|
+
rule('macadamia') { "'Makadama " }
|
74
|
+
rule('book') { "'Livere " }
|
75
|
+
|
76
|
+
# Simple colors
|
77
|
+
rule('black') { "nere " }
|
78
|
+
rule('white') { "bahene " }
|
79
|
+
rule('red') { "rude " }
|
80
|
+
rule('blue') { "beru " }
|
81
|
+
rule('green') { "vene " }
|
82
|
+
rule('orange') { "henije " }
|
83
|
+
rule('brown') { "berone " }
|
84
|
+
rule('yellow') { "yeru " }
|
85
|
+
rule('pink') { "viyete " }
|
86
|
+
|
87
|
+
# Simple actions
|
88
|
+
rule('get') { "eru'; " }
|
89
|
+
rule('cut') { "cupo'; " }
|
90
|
+
rule('unlock') { "uvere'; " }
|
91
|
+
rule('read') { "lisoje'; " }
|
92
|
+
rule('sit') { "asoxi'; " }
|
93
|
+
rule('recite') { "decite'; " }
|
94
|
+
rule('adjust') { "xosfe'; " }
|
95
|
+
rule('add') { "ataxi'; " }
|
96
|
+
rule('bundle') { "konitoru'; " }
|
97
|
+
end
|
98
|
+
|
99
|
+
class SenToRu
|
100
|
+
def self.compile
|
101
|
+
input = $ast_output
|
102
|
+
|
103
|
+
tokenized_input = input.split(" ")
|
104
|
+
|
105
|
+
size_limit = tokenized_input.size.to_i
|
106
|
+
|
107
|
+
number = 0
|
108
|
+
|
109
|
+
open("#{tokenized_input[3].downcase}.rb", "w") { |f|
|
110
|
+
size_limit.times do
|
111
|
+
translator = {
|
112
|
+
# Convert Keywords
|
113
|
+
"GRAMMAR" => "module Grammar\n ",
|
114
|
+
"PHRASE" => "class Phrase\n ",
|
115
|
+
"SAY" => "def self.#{tokenized_input[3].downcase}\n ",
|
116
|
+
"OWARI" => "
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end",
|
120
|
+
|
121
|
+
# Convert Objects
|
122
|
+
"cere" => "puts 'Key",
|
123
|
+
"xase" => "puts 'chair",
|
124
|
+
"makadama" => "puts 'macadamia",
|
125
|
+
"livere" => "puts 'book",
|
126
|
+
|
127
|
+
# Convert Colors
|
128
|
+
"nere" => "black",
|
129
|
+
"bahene" => "white",
|
130
|
+
"rude" => "rude",
|
131
|
+
"beru" => "blue",
|
132
|
+
"vene" => "green",
|
133
|
+
"henije" => "orange",
|
134
|
+
"berone" => "brown",
|
135
|
+
"yeru" => "yellow",
|
136
|
+
"viyete" => "pink",
|
137
|
+
|
138
|
+
# Convert Actions
|
139
|
+
"eru" => "get'",
|
140
|
+
"cupo" => "cut'",
|
141
|
+
"uvere" => "unlock'",
|
142
|
+
"losoje" => "read'",
|
143
|
+
"asoxi" => "sit'",
|
144
|
+
"decite" => "recite'",
|
145
|
+
"xosfe" => "adjust'",
|
146
|
+
"ataxi" => "add'",
|
147
|
+
"konitoru" => "bundle'",
|
148
|
+
}
|
149
|
+
|
150
|
+
f.print "#{translator[tokenized_input[number]]} "
|
151
|
+
|
152
|
+
number = number + 1
|
153
|
+
end
|
154
|
+
|
155
|
+
f.puts " "
|
156
|
+
}
|
157
|
+
end
|
158
|
+
|
159
|
+
puts "Converted SenSpace To Ruby Modules..."
|
160
|
+
end
|
161
|
+
|
162
|
+
class Read_File
|
163
|
+
def self.each_line
|
164
|
+
begin
|
165
|
+
read_file = File.readlines("_scripts/script.sen") #.to_s
|
166
|
+
|
167
|
+
size_limit = read_file.size.to_i
|
168
|
+
|
169
|
+
file_tokens = read_file #.strip
|
170
|
+
|
171
|
+
number = 0
|
172
|
+
|
173
|
+
size_limit.times do
|
174
|
+
parser = Parser.new
|
175
|
+
|
176
|
+
split_line_tokens = file_tokens[number].split(" ")
|
177
|
+
|
178
|
+
semantics = "#{split_line_tokens[0]} #{split_line_tokens[1]} #{split_line_tokens[2]} #{split_line_tokens[3]} #{split_line_tokens[4]} #{split_line_tokens[5]} #{split_line_tokens[6]}"
|
179
|
+
|
180
|
+
tree = parser.parse(semantics)
|
181
|
+
|
182
|
+
transform = Transform.new
|
183
|
+
ast = transform.apply(tree)
|
184
|
+
|
185
|
+
$ast_output = "#{ast}".to_s
|
186
|
+
|
187
|
+
convert_syntax
|
188
|
+
|
189
|
+
# print $ast_output
|
190
|
+
# puts " "
|
191
|
+
|
192
|
+
number = number + 1
|
193
|
+
end
|
194
|
+
rescue Parslet::ParseFailed => error
|
195
|
+
puts error.parse_failure_cause.ascii_tree
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
metadata
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: SenSpace
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gitea
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-11-12 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: 'The eventual aim of SenSpace is to standardize auto scripting for functions
|
14
|
+
to make it easier for AI algorithms to script automatically. This follows a simple
|
15
|
+
grammer: GRAMMAR PHRASE SAY [object color action]. The parser than compiles your
|
16
|
+
commands into formal ruby modules. Eventually I will be expanding this into its
|
17
|
+
own independant scripting language seperate from Ruby.'
|
18
|
+
email:
|
19
|
+
- gitea@fake.local
|
20
|
+
executables: []
|
21
|
+
extensions: []
|
22
|
+
extra_rdoc_files: []
|
23
|
+
files:
|
24
|
+
- Gemfile
|
25
|
+
- README.md
|
26
|
+
- Rakefile
|
27
|
+
- bin/console
|
28
|
+
- bin/setup
|
29
|
+
- lib/SenSpace.rb
|
30
|
+
- lib/SenSpace/version.rb
|
31
|
+
homepage: https://github.com/LWFlouisa/senspaceDSL
|
32
|
+
licenses: []
|
33
|
+
metadata: {}
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
require_paths:
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 2.3.0
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
requirements: []
|
49
|
+
rubygems_version: 3.2.22
|
50
|
+
signing_key:
|
51
|
+
specification_version: 4
|
52
|
+
summary: A higher level text parser that convert SenSpace script to Ruby modules based
|
53
|
+
on Fraponic.
|
54
|
+
test_files: []
|