solpl 2.3.6__tar.gz → 2.4.0__tar.gz

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.
solpl-2.4.0/PKG-INFO ADDED
@@ -0,0 +1,91 @@
1
+ Metadata-Version: 2.4
2
+ Name: solpl
3
+ Version: 2.4.0
4
+ Summary: A lightweight, multi-threaded interpreter for the Sol programming language
5
+ Author-email: stefand-0 <stefand-0@users.noreply.github.com>
6
+ License-Expression: Apache-2.0
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Operating System :: OS Independent
9
+ Requires-Python: >=3.7
10
+ Description-Content-Type: text/markdown
11
+ License-File: LICENSE
12
+ Dynamic: license-file
13
+
14
+ # Sol
15
+
16
+ ![LOGO](images/Add%20a%20heading.png)
17
+ ![python](https://camo.githubusercontent.com/c180a48cde4ae1970836edbdf0025a601034aa67fcb4419457f051a481e88811/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31312d626c75653f7374796c653d666f722d7468652d6261646765266c6f676f3d707974686f6e)
18
+ ![status](https://camo.githubusercontent.com/f9abd5e3e4958db47256814d395b7923defa3d1fb609e0ce304c50406ce2cd69/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7374617475732d6163746976652d737563636573733f7374796c653d666f722d7468652d6261646765)
19
+ ![License](https://img.shields.io/badge/License-Apache_2.0-blue?style=for-the-badge)
20
+ ![Language](https://img.shields.io/badge/Language-Sol-FFB000?style=for-the-badge&logo=target)
21
+
22
+ Sol is an interpreted language with minimal functional paradigms built with Python, originally designed to handle async operations only, but has expanded to a full scripting language.
23
+
24
+ # Why did I build Sol?
25
+
26
+ I originaly needed something fast, that handled async natively, and which had very few keywords. Then came my first prototype, which only supported async functions. Sol now supports everything a programming language should need: Functions, variables, I/O, etc.
27
+
28
+ # What advantages does Sol have over other languages?
29
+
30
+ - Native async, with no external libraries
31
+
32
+ - Native networking, also with no external libraries
33
+
34
+ - With very few keywords, it is the language with the least keywords
35
+
36
+ - Easy to use standard libraries
37
+
38
+ - Simple syntax, which goes a long way for automation, web scraping, scripting, math, etc.
39
+
40
+ # Capabilities:
41
+
42
+ - Native asynchronous functions
43
+
44
+ - Native non-blocking IO
45
+
46
+ - Native networking library
47
+
48
+ - Support for structs
49
+
50
+ - Some functional paradigms, bound by the pipe operator ">>", used for channeling async, async into I/O, etc.
51
+
52
+ - A large collection of standard libraries (including standard web libraries)
53
+
54
+ # How to install Sol?
55
+
56
+ ```bash
57
+ pip install solpl
58
+ ```
59
+
60
+ # How to run a Sol script?
61
+
62
+ ```bash
63
+ solpl FILENAME.sol
64
+ ```
65
+
66
+ # Example:
67
+
68
+ This demonstrates Sol's capabilities with async:
69
+
70
+ ```lua
71
+ countDown(taskName, maxCount)
72
+ for i -> 1 to maxCount
73
+ _out -> taskName
74
+ end
75
+ end
76
+
77
+ main()
78
+ _out -> 111
79
+ countDown(777, 4) >> _async
80
+ countDown(999, 4) >> _async
81
+ _out -> 222
82
+ end
83
+ ```
84
+
85
+ # License
86
+
87
+ This repository is licensed with Apache License 2.0, see the LICENSE file for more details
88
+
89
+ # Link to PyPi package:
90
+
91
+ https://pypi.org/project/solpl/
solpl-2.4.0/README.md ADDED
@@ -0,0 +1,78 @@
1
+ # Sol
2
+
3
+ ![LOGO](images/Add%20a%20heading.png)
4
+ ![python](https://camo.githubusercontent.com/c180a48cde4ae1970836edbdf0025a601034aa67fcb4419457f051a481e88811/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31312d626c75653f7374796c653d666f722d7468652d6261646765266c6f676f3d707974686f6e)
5
+ ![status](https://camo.githubusercontent.com/f9abd5e3e4958db47256814d395b7923defa3d1fb609e0ce304c50406ce2cd69/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7374617475732d6163746976652d737563636573733f7374796c653d666f722d7468652d6261646765)
6
+ ![License](https://img.shields.io/badge/License-Apache_2.0-blue?style=for-the-badge)
7
+ ![Language](https://img.shields.io/badge/Language-Sol-FFB000?style=for-the-badge&logo=target)
8
+
9
+ Sol is an interpreted language with minimal functional paradigms built with Python, originally designed to handle async operations only, but has expanded to a full scripting language.
10
+
11
+ # Why did I build Sol?
12
+
13
+ I originaly needed something fast, that handled async natively, and which had very few keywords. Then came my first prototype, which only supported async functions. Sol now supports everything a programming language should need: Functions, variables, I/O, etc.
14
+
15
+ # What advantages does Sol have over other languages?
16
+
17
+ - Native async, with no external libraries
18
+
19
+ - Native networking, also with no external libraries
20
+
21
+ - With very few keywords, it is the language with the least keywords
22
+
23
+ - Easy to use standard libraries
24
+
25
+ - Simple syntax, which goes a long way for automation, web scraping, scripting, math, etc.
26
+
27
+ # Capabilities:
28
+
29
+ - Native asynchronous functions
30
+
31
+ - Native non-blocking IO
32
+
33
+ - Native networking library
34
+
35
+ - Support for structs
36
+
37
+ - Some functional paradigms, bound by the pipe operator ">>", used for channeling async, async into I/O, etc.
38
+
39
+ - A large collection of standard libraries (including standard web libraries)
40
+
41
+ # How to install Sol?
42
+
43
+ ```bash
44
+ pip install solpl
45
+ ```
46
+
47
+ # How to run a Sol script?
48
+
49
+ ```bash
50
+ solpl FILENAME.sol
51
+ ```
52
+
53
+ # Example:
54
+
55
+ This demonstrates Sol's capabilities with async:
56
+
57
+ ```lua
58
+ countDown(taskName, maxCount)
59
+ for i -> 1 to maxCount
60
+ _out -> taskName
61
+ end
62
+ end
63
+
64
+ main()
65
+ _out -> 111
66
+ countDown(777, 4) >> _async
67
+ countDown(999, 4) >> _async
68
+ _out -> 222
69
+ end
70
+ ```
71
+
72
+ # License
73
+
74
+ This repository is licensed with Apache License 2.0, see the LICENSE file for more details
75
+
76
+ # Link to PyPi package:
77
+
78
+ https://pypi.org/project/solpl/
@@ -32,7 +32,7 @@ class SolInterpreter:
32
32
 
33
33
  with open(filename, "r") as f:
34
34
  code = f.read()
35
- base_name = os.path.basename(filename)
35
+ base_name = file.path.basename(filename)
36
36
  module_name = base_name.replace(".sol", "")
37
37
  lines = [l.strip() for l in code.split('\n') if l.strip()]
38
38
  for pc, line in enumerate(lines):
@@ -44,8 +44,9 @@ class SolInterpreter:
44
44
  self.functions[f"{module_name}.{name}"] = {"start_pc": pc + 1, "params": params, "source_lines": lines}
45
45
 
46
46
  def _compute(self, expr):
47
+ is_literal = (expr.startswith('"') and expr.endswith('"')) or (expr.startswith("'") and expr.endswith("'"))
47
48
  expr = str(expr).strip()
48
- if "+" in expr and any(c.isalpha() or c in ['"', "'"] for c in expr):
49
+ if "+" in expr and not is_literally and any(c.isalpha() or c in ['"', "'"] for c in expr):
49
50
  parts = expr.split("+")
50
51
  result = ""
51
52
  for p in parts:
@@ -105,7 +106,9 @@ class SolInterpreter:
105
106
  existing_val = self._lookup(val)
106
107
  if existing_val is not None: return existing_val
107
108
  try: return float(val) if '.' in val else int(val)
108
- except: return None
109
+ except:
110
+ print(f"Error: Failed to solve expression: {val}")
111
+ return None
109
112
 
110
113
  def _async_worker(self, expr, action):
111
114
  result = self._compute(expr)
@@ -145,19 +148,18 @@ class SolInterpreter:
145
148
  self.threads.append(t)
146
149
 
147
150
  def _evaluate_condition(self, cond):
148
- def get_val(expr):
149
- val = self._compute(expr.strip())
150
- return val if val is not None else 0
151
-
151
+ if "==" in cond:
152
+ left, right = cond.split("==", 1)
153
+ return self._compute(left.strip()) == self._compute(right.strip())
152
154
  if "=" in cond:
153
155
  left, right = cond.split("=")
154
- return get_val(left) == get_val(right)
156
+ return self._compute(left.strip()) == self._compute(right.strip())
155
157
  elif "<" in cond:
156
158
  left, right = cond.split("<")
157
- return get_val(left) < get_val(right)
159
+ return self._compute(left.strip()) < self._compute(right.strip())
158
160
  elif ">" in cond:
159
161
  left, right = cond.split(">")
160
- return get_val(left) > get_val(right)
162
+ return self._compute(left.strip()) > self._compute(right.strip())
161
163
  return False
162
164
 
163
165
  def _get_block_end(self, start_pc):
@@ -345,3 +347,5 @@ def main():
345
347
 
346
348
  if __name__ == "__main__":
347
349
  main()
350
+
351
+ # do you really think I would go back and comment the code? i wrote the first version in a month.
@@ -0,0 +1,25 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "solpl"
7
+ version = "2.4.0"
8
+ authors = [
9
+ { name = "stefand-0", email = "stefand-0@users.noreply.github.com" }
10
+ ]
11
+ description = "A lightweight, multi-threaded interpreter for the Sol programming language"
12
+ readme = "README.md"
13
+ license = "Apache-2.0"
14
+ requires-python = ">=3.7"
15
+ classifiers = [
16
+ "Programming Language :: Python :: 3",
17
+ "Operating System :: OS Independent"
18
+ ]
19
+
20
+ [project.scripts]
21
+ sol = "interpreter.sol:main"
22
+
23
+ [tool.setuptools.packages]
24
+ find = { include = ["interpreter"] }
25
+
@@ -0,0 +1,91 @@
1
+ Metadata-Version: 2.4
2
+ Name: solpl
3
+ Version: 2.4.0
4
+ Summary: A lightweight, multi-threaded interpreter for the Sol programming language
5
+ Author-email: stefand-0 <stefand-0@users.noreply.github.com>
6
+ License-Expression: Apache-2.0
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Operating System :: OS Independent
9
+ Requires-Python: >=3.7
10
+ Description-Content-Type: text/markdown
11
+ License-File: LICENSE
12
+ Dynamic: license-file
13
+
14
+ # Sol
15
+
16
+ ![LOGO](images/Add%20a%20heading.png)
17
+ ![python](https://camo.githubusercontent.com/c180a48cde4ae1970836edbdf0025a601034aa67fcb4419457f051a481e88811/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31312d626c75653f7374796c653d666f722d7468652d6261646765266c6f676f3d707974686f6e)
18
+ ![status](https://camo.githubusercontent.com/f9abd5e3e4958db47256814d395b7923defa3d1fb609e0ce304c50406ce2cd69/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7374617475732d6163746976652d737563636573733f7374796c653d666f722d7468652d6261646765)
19
+ ![License](https://img.shields.io/badge/License-Apache_2.0-blue?style=for-the-badge)
20
+ ![Language](https://img.shields.io/badge/Language-Sol-FFB000?style=for-the-badge&logo=target)
21
+
22
+ Sol is an interpreted language with minimal functional paradigms built with Python, originally designed to handle async operations only, but has expanded to a full scripting language.
23
+
24
+ # Why did I build Sol?
25
+
26
+ I originaly needed something fast, that handled async natively, and which had very few keywords. Then came my first prototype, which only supported async functions. Sol now supports everything a programming language should need: Functions, variables, I/O, etc.
27
+
28
+ # What advantages does Sol have over other languages?
29
+
30
+ - Native async, with no external libraries
31
+
32
+ - Native networking, also with no external libraries
33
+
34
+ - With very few keywords, it is the language with the least keywords
35
+
36
+ - Easy to use standard libraries
37
+
38
+ - Simple syntax, which goes a long way for automation, web scraping, scripting, math, etc.
39
+
40
+ # Capabilities:
41
+
42
+ - Native asynchronous functions
43
+
44
+ - Native non-blocking IO
45
+
46
+ - Native networking library
47
+
48
+ - Support for structs
49
+
50
+ - Some functional paradigms, bound by the pipe operator ">>", used for channeling async, async into I/O, etc.
51
+
52
+ - A large collection of standard libraries (including standard web libraries)
53
+
54
+ # How to install Sol?
55
+
56
+ ```bash
57
+ pip install solpl
58
+ ```
59
+
60
+ # How to run a Sol script?
61
+
62
+ ```bash
63
+ solpl FILENAME.sol
64
+ ```
65
+
66
+ # Example:
67
+
68
+ This demonstrates Sol's capabilities with async:
69
+
70
+ ```lua
71
+ countDown(taskName, maxCount)
72
+ for i -> 1 to maxCount
73
+ _out -> taskName
74
+ end
75
+ end
76
+
77
+ main()
78
+ _out -> 111
79
+ countDown(777, 4) >> _async
80
+ countDown(999, 4) >> _async
81
+ _out -> 222
82
+ end
83
+ ```
84
+
85
+ # License
86
+
87
+ This repository is licensed with Apache License 2.0, see the LICENSE file for more details
88
+
89
+ # Link to PyPi package:
90
+
91
+ https://pypi.org/project/solpl/
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ sol = interpreter.sol:main
solpl-2.3.6/PKG-INFO DELETED
@@ -1,7 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: solpl
3
- Version: 2.3.6
4
- Summary: Sol Programming Language Interpreter
5
- Requires-Python: >=3.7
6
- License-File: LICENSE
7
- Dynamic: license-file
solpl-2.3.6/README.md DELETED
@@ -1,45 +0,0 @@
1
- # Sol
2
- Sol is an interpreted language built with Python, originally designed to handle async operations only, but has expanded to a full scripting language.
3
-
4
- # Why did I build Sol?
5
-
6
- I needed something fast, that handled async natively, and which had very few keywords. Then came my first prototype, which only supported async functions. Sol now supports everything a programming language should need: Functions, variables, I/O, etc.
7
-
8
- # How to install Sol?
9
-
10
- ```bash
11
- pip install solpl
12
- ```
13
-
14
- # How to run a Sol script?
15
-
16
- ```bash
17
- solpl FILENAME.sol
18
- ```
19
-
20
- # Example:
21
-
22
- This demonstrates Sol's capabilities with async:
23
-
24
- ```lua
25
- countDown(taskName, maxCount)
26
- for i -> 1 to maxCount
27
- _out -> taskName
28
- end
29
- end
30
-
31
- main()
32
- _out -> 111
33
- countDown(777, 4) >> _async
34
- countDown(999, 4) >> _async
35
- _out -> 222
36
- end
37
- ```
38
-
39
- # License
40
-
41
- This repository is licensed with Apache License 2.0, see the LICENSE file for more details
42
-
43
- # Link to PyPi package:
44
-
45
- https://pypi.org/project/solpl/
@@ -1,15 +0,0 @@
1
- [build-system]
2
- requires = ["setuptools>=61.0", "wheel"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "solpl"
7
- version = "2.3.6"
8
- description = "Sol Programming Language Interpreter"
9
- requires-python = ">=3.7"
10
-
11
- [project.scripts]
12
- solpl = "interpreter.sol:main"
13
-
14
- [tool.setuptools]
15
- packages = ["interpreter"]
@@ -1,7 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: solpl
3
- Version: 2.3.6
4
- Summary: Sol Programming Language Interpreter
5
- Requires-Python: >=3.7
6
- License-File: LICENSE
7
- Dynamic: license-file
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- solpl = interpreter.sol:main
File without changes
File without changes
File without changes