SenSpace 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in SenSpace.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
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
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ task default: %i[]
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
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SenSpace
4
+ VERSION = "0.1.0"
5
+ end
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: []