taoism 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6257a4a47d084d1a3bdaab39c08ab216ddd729fad2f508da85a79775043539bf
4
+ data.tar.gz: 4d156fb2970893a73fe4898c316dc33d96785e9cb48ee7ddf1dfa343521afff0
5
+ SHA512:
6
+ metadata.gz: 8f4fc03e11db86e3c85fab8fae14509036d1579bd166b97cfa582dc2673fcb8fb0941d75da3278884b9dc431188a1877f3b385ebac91fe711ed820357b13f323
7
+ data.tar.gz: 9f3d220093d56d8423c9e8f34263b4ee949931cdcd6c7253c857d8c4568e3605e9e052d1a6181e57a215f6b251aa26f3e12b38f86e08cf66e494904bb691e283
data/bin/tao ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ruby
2
+ require 'tao'
@@ -0,0 +1,7 @@
1
+ module Tao
2
+ module Lexer
3
+ class Scanner
4
+ Position = Struct.new(:index, :line, :col)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ module Tao
2
+ module Lexer
3
+ class Scanner
4
+ module PositionTracking
5
+ def self.included(base)
6
+ base.class_eval { attr_reader :pos }
7
+ end
8
+
9
+ def init_pos
10
+ @pos = Position.new(0, 1, 1)
11
+ end
12
+
13
+ def beginning_of_line?
14
+ @pos.col == 1
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,50 @@
1
+ module Tao
2
+ module Lexer
3
+ class Scanner
4
+ include PositionTracking
5
+
6
+ def initialize(source)
7
+ @source = source
8
+ @current = 0
9
+ init_pos
10
+ end
11
+
12
+ def alpha_numeric?(ch)
13
+ alpha_char?(ch) || digit_char?(ch)
14
+ end
15
+
16
+ def alpha_char?(ch)
17
+ ('A' <= ch && ch <= 'Z') ||
18
+ ('a' <= ch && ch <= 'z') ||
19
+ ('_' == ch)
20
+ end
21
+
22
+ def digit_char?(ch)
23
+ '0' <= ch && ch <= '9'
24
+ end
25
+
26
+ def peek
27
+ return "\0" if at_end?
28
+ @source[@current]
29
+ end
30
+
31
+ def peek_next
32
+ if @current.next < @source.length
33
+ @source[@current.next]
34
+ else
35
+ "\0"
36
+ end
37
+ end
38
+
39
+ def advance(step = 1)
40
+ char = @source[@current]
41
+ @current += step
42
+ char
43
+ end
44
+
45
+ def at_end?
46
+ @source[@current].nil?
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,17 @@
1
+ module Tao
2
+ module Lexer
3
+ class Tokenizer
4
+ def initialize
5
+ @scanner = Scanner.new
6
+ end
7
+
8
+ def bool_token?(str)
9
+ str == 'True' || str == 'False'
10
+ end
11
+
12
+ def none_token?(str)
13
+ str == 'None'
14
+ end
15
+ end
16
+ end
17
+ end
data/lib/tao/lexer.rb ADDED
@@ -0,0 +1,6 @@
1
+ module Tao
2
+ module Lexer
3
+ def self.tokenize
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,34 @@
1
+ module Tao
2
+ class Token
3
+ module Types
4
+ def self.included(base)
5
+ token_type :Plus, :Minus, :Star, :Slash, :Modulo,
6
+ :Greater, :GreaterEq, :Less, :LessEq,
7
+ :Equal, :EqualEq, :Bang, :BangEq,
8
+ :And, :Or, :Not, :Pipe
9
+
10
+ token_type :Comma, :Colon, :Semi, :Dot,
11
+ :LSquare, :RSquare,
12
+ :LBrace, :RBrace,
13
+ :LParen, :RParen
14
+
15
+ token_type :Identifier, :String, :Int,
16
+ :Float, :Bool, :None,
17
+ :EOF, :Illegal
18
+
19
+ token_type :If, :Then, :Else, :Loop,
20
+ :Is,
21
+ :Next, :Leave,
22
+ :Match, :Return,
23
+ :Fun, :Self,
24
+ :Let, :Mut,
25
+ :Use, :At,
26
+ :Data
27
+ end
28
+
29
+ def self.token_type(*types)
30
+ types.each { const_set _1, _1 }
31
+ end
32
+ end
33
+ end
34
+ end
data/lib/tao/token.rb ADDED
@@ -0,0 +1,8 @@
1
+ module Tao
2
+ class Token
3
+ include Types
4
+
5
+ def initialize
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ module Tao
2
+ VERSION = '1.0.1'
3
+ end
data/lib/taoism.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Taoism
2
+ Version = Tao::VERSION
3
+ end
metadata ADDED
@@ -0,0 +1,53 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: taoism
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - oneureka
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2025-12-02 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ executables:
16
+ - tao
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/tao
21
+ - lib/tao/lexer.rb
22
+ - lib/tao/lexer/scanner.rb
23
+ - lib/tao/lexer/scanner/position.rb
24
+ - lib/tao/lexer/scanner/position_tracking.rb
25
+ - lib/tao/lexer/tokenizer.rb
26
+ - lib/tao/token.rb
27
+ - lib/tao/token/types.rb
28
+ - lib/tao/version.rb
29
+ - lib/taoism.rb
30
+ homepage:
31
+ licenses:
32
+ - MIT
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: '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.5.22
50
+ signing_key:
51
+ specification_version: 4
52
+ summary: The Tao programming language
53
+ test_files: []