Skip to content

Commit 5ebcd84

Browse files
author
Vivek Dagar
committed
removed shell.py, merged main.py
1 parent 6ecbdfe commit 5ebcd84

File tree

15 files changed

+66
-67
lines changed

15 files changed

+66
-67
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name='xbasic',
5-
version='1.0',
5+
version='1.0.2',
66
packages=find_packages(),
77
install_requires=[
88
'click~=8.1.7',

xbasic/Interpreter.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from error_handler.rtresult import RTResult
2-
from utils.token_list import *
3-
from number import Number
4-
from list import List
1+
from .error_handler.rtresult import RTResult
2+
from .utils.token_list import *
3+
from .number import Number
4+
from .list import List
55

66
class Interpreter:
77
def visit(self, node, context):
@@ -20,7 +20,7 @@ def visit_NumberNode(self, node, context):
2020
)
2121

2222
def visit_StringNode(self, node, context):
23-
from string import String
23+
from .string_value import String
2424
return RTResult().success(
2525
String(node.tok.value).set_context(context).set_pos(node.pos_start, node.pos_end)
2626
)
@@ -43,7 +43,7 @@ def visit_VarAccessNode(self, node, context):
4343
value = context.symbol_table.get(var_name)
4444

4545
if not value:
46-
from error_handler.rterror import RTError
46+
from .error_handler.rterror import RTError
4747
return res.failure(RTError(
4848
node.pos_start, node.pos_end,
4949
f"'{var_name}' is not defined",
@@ -215,7 +215,7 @@ def visit_FuncDefNode(self, node, context):
215215
body_node = node.body_node
216216
arg_names = [arg_name.value for arg_name in node.arg_name_toks]
217217

218-
from function import Function
218+
from .function import Function
219219
func_value = Function(func_name, body_node, arg_names, node.should_auto_return).set_context(context).set_pos(
220220
node.pos_start, node.pos_end)
221221

xbasic/builtinfunction.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from function import BaseFunction
2-
from error_handler.rtresult import RTResult
1+
from .function import BaseFunction
2+
from .error_handler.rtresult import RTResult
33
import os
4-
from number import Number
5-
from string_value import String
6-
from list import List
7-
from error_handler.rterror import RTError
4+
from .number import Number
5+
from .string_value import String
6+
from .list import List
7+
from .error_handler.rterror import RTError
88

99

1010
class BuiltInFunction(BaseFunction):

xbasic/error_handler/error.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def as_string(self):
99
result = f'{self.error_name}: {self.details}\n'
1010
result += f'File {self.pos_start.fn}, line {self.pos_start.ln + 1}'
1111

12-
from string_with_arrows import string_with_arrows
12+
from .string_with_arrows import string_with_arrows
1313
result += '\n\n' + string_with_arrows(self.pos_start.ftxt, self.pos_start, self.pos_end)
1414
return result
1515

xbasic/error_handler/rterror.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def as_string(self):
1010
result = self.generate_traceback()
1111
result += f'{self.error_name}: {self.details}'
1212

13-
from string_with_arrows import string_with_arrows
13+
from .string_with_arrows import string_with_arrows
1414
result += '\n\n' + string_with_arrows(self.pos_start.ftxt, self.pos_start, self.pos_end)
1515
return result
1616

xbasic/function.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from value import Value
2-
from error_handler.rterror import RTError
3-
from error_handler.rtresult import RTResult
1+
from .value import Value
2+
from .error_handler.rterror import RTError
3+
from .error_handler.rtresult import RTResult
44

55
class BaseFunction(Value):
66
def __init__(self, name):
@@ -9,10 +9,10 @@ def __init__(self, name):
99

1010
def generate_new_context(self):
1111

12-
from context_handler.context import Context
12+
from .context_handler.context import Context
1313
new_context = Context(self.name, self.context, self.pos_start)
1414

15-
from context_handler.symbol_table import SymbolTable
15+
from .context_handler.symbol_table import SymbolTable
1616
new_context.symbol_table = SymbolTable(new_context.parent.symbol_table)
1717
return new_context
1818

@@ -60,7 +60,7 @@ def __init__(self, name, body_node, arg_names, should_auto_return):
6060
def execute(self, args):
6161
res = RTResult()
6262

63-
from Interpreter import Interpreter
63+
from .Interpreter import Interpreter
6464
interpreter = Interpreter()
6565
exec_ctx = self.generate_new_context()
6666

@@ -70,7 +70,7 @@ def execute(self, args):
7070
value = res.register(interpreter.visit(self.body_node, exec_ctx))
7171
if res.should_return() and res.func_return_value == None: return res
7272

73-
from number import Number
73+
from .number import Number
7474
ret_value = (value if self.should_auto_return else None) or res.func_return_value or Number.null
7575
return res.success(ret_value)
7676

xbasic/init_interp.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from context_handler.symbol_table import SymbolTable
2-
from builtinfunction import BuiltInFunction
3-
from number import Number
1+
from .context_handler.symbol_table import SymbolTable
2+
from .builtinfunction import BuiltInFunction
3+
from .number import Number
44

55
global_symbol_table = SymbolTable()
66
global_symbol_table.set("NULL", Number.null)
@@ -27,22 +27,22 @@
2727
def run(fn, text):
2828
# Generate tokens
2929

30-
from lexer import Lexer
30+
from .lexer import Lexer
3131
lexer = Lexer(fn, text)
3232
tokens, error = lexer.make_tokens()
3333
if error: return None, error
3434

3535
# Generate AST
36-
from parser import Parser
36+
from .parser import Parser
3737
parser = Parser(tokens)
3838
ast = parser.parse()
3939
if ast.error: return None, ast.error
4040

4141
# Run program
42-
from Interpreter import Interpreter
42+
from .Interpreter import Interpreter
4343
interpreter = Interpreter()
4444

45-
from context_handler.context import Context
45+
from .context_handler.context import Context
4646
context = Context('<program>')
4747
context.symbol_table = global_symbol_table
4848
result = interpreter.visit(ast.node, context)

xbasic/lexer.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from utils.position import Position
2-
from utils.token import Token
3-
from utils.token_list import *
1+
from .utils.position import Position
2+
from .utils.token import Token
3+
from .utils.token_list import *
44

55

66
class Lexer:
@@ -76,7 +76,7 @@ def make_tokens(self):
7676
char = self.current_char
7777
self.advance()
7878

79-
from error_handler.error import IllegalCharError
79+
from .error_handler.error import IllegalCharError
8080
return [], IllegalCharError(pos_start, self.pos, "'" + char + "'")
8181

8282
tokens.append(Token(TT_EOF, pos_start=self.pos))
@@ -156,7 +156,7 @@ def make_not_equals(self):
156156

157157
self.advance()
158158

159-
from error_handler.error import ExpectedCharError
159+
from .error_handler.error import ExpectedCharError
160160
return None, ExpectedCharError(pos_start, self.pos, "'=' (after '!')")
161161

162162
def make_equals(self):

xbasic/list.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from value import Value
2-
from number import Number
3-
from error_handler.rterror import RTError
1+
from .value import Value
2+
from .number import Number
3+
from .error_handler.rterror import RTError
44
class List(Value):
55
def __init__(self, elements):
66
super().__init__()

xbasic/main.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import webbrowser
33
import platform
44
import datetime
5-
from shell import entry_shell
5+
from .init_interp import run
66

77

88
@click.group()
@@ -17,6 +17,21 @@ def report():
1717
webbrowser.open("https://github.com/vivekkdagar/xbasic")
1818

1919

20+
def entry_shell():
21+
while True:
22+
text = input('>> ')
23+
if text.strip() == "": continue
24+
result, error = run('<stdin>', text)
25+
26+
if error:
27+
print(error.as_string())
28+
elif result:
29+
print(result)
30+
#if len(result.elements) == 1:
31+
# print(repr(result.elements[0]))
32+
# else:
33+
# print(repr(result))
34+
2035
@cli.command()
2136
@click.option('-f', type=click.Path(exists=True), default=None, help='Specify a file to execute within the shell.')
2237
def shell(f):

0 commit comments

Comments
 (0)