diff --git a/haellae.py b/haellae.py index edf5a15..9feaa91 100644 --- a/haellae.py +++ b/haellae.py @@ -21,7 +21,7 @@ def execute(filename): def main(args): if(len(args) == 0): - repl() + repl(standard_library) filename = args[0] if(not os.path.exists(filename)): raise FileNotFoundError("Invalid path or file does not exist") diff --git a/interpreter/interpreter.py b/interpreter/interpreter.py index 366b928..d682adb 100644 --- a/interpreter/interpreter.py +++ b/interpreter/interpreter.py @@ -43,7 +43,7 @@ def interpret_internal(ast, assignment_store : dict, execution_state: ExecutionS if execution_state.signal != Signal.NONE: return val1 val2 = interpret_internal(ast[2], assignment_store, execution_state) - return val2 if val2 else val1 + return val2 if val2!=None else val1 case 'assign-statement': execution_state.assignment = ast[1] diff --git a/repl.py b/repl.py index 95570a9..aa1d501 100644 --- a/repl.py +++ b/repl.py @@ -9,8 +9,8 @@ class Prompt(Cmd): prompt = '>>> ' # intro = "Welcome to the haellang repl!" - def init(self): - self.assignment_store = dict() + def init(self, standard_library): + _, self.assignment_store = interpret(parse(standard_library)) def do_exit(self, _): exit(0) @@ -19,7 +19,7 @@ def default(self, statement): try: self.assignment_store = execute_statement(statement, self.assignment_store) except Exception as e: - print(e) + print(e.__traceback__) do_EOF = do_exit @@ -31,9 +31,9 @@ def execute_statement(statement:str, assignment_store:dict): return new_assignment_store -def repl(): +def repl(standard_library): prompt = Prompt() - prompt.init() + prompt.init(standard_library) while True: try: prompt.cmdloop() diff --git a/stl/haellae.haellae b/stl/haellae.haellae index f6cc472..d07a391 100644 --- a/stl/haellae.haellae +++ b/stl/haellae.haellae @@ -15,3 +15,46 @@ slå_sammen_bråtæne ære-samma-som en-fungsjon såm-brukær bråtæ_1 å bråt gi-tilbake slått_sammen_bråtæ. åså-varn-færi. + +ær_primtall ære-samma-som en-fungsjon såm-brukær n såm-gjør + i ære-samma-som 2. + imens i småære-enn n delær 2 plussær 1 ta-åsså-gjør + dersom-atter hællæ n mådda-med i prekæs er-prikk-lik 0 så + gi-tilbake ente-rekti. + ellers så + ente-gjør-no. + åsså-æru-ferdig. + i ære-samma-som i plussær 1. + åsså-gjøru-det-igjen. + gi-tilbake klart-det. +åså-varn-færi. + +absolutt_værrdi ære-samma-som en-fungsjon såm-brukær n såm-gjør + dersom-atter n småære-enn 0 så + gi-tilbake n gangær hællæ 0 minusær 1 prekæs. + ellers så + gi-tilbake n. + åsså-æru-ferdig. +åså-varn-færi. + +opphøyd_i ære-samma-som en-fungsjon såm-brukær n å povver såm-gjør + i ære-samma-som 0. + m ære-samma-som 1. + imens i småære-enn povver ta-åsså-gjør + m ære-samma-som m gangær n. + i ære-samma-som i plussær 1. + åsså-gjøru-det-igjen. + gi-tilbake m. +åså-varn-færi. + +kartlegg ære-samma-som en-fungsjon såm-brukær f å bråtæ såm-gjør + ressultat ære-samma-som en-bråtæ-beståænes-av å-det-var-det. + i ære-samma-som 0. + imens + i småære-enn hællæ størlsen-a bråtæ å-det-var-det prekæs + ta-åsså-gjør + legg-te kjør f med plass-nummer i plussær 1 i-bråtæn bråtæ å-det-var-det å-det-var-det i-bråtæn ressultat å-det-var-det. + i ære-samma-som i plussær 1. + åsså-gjøru-det-igjen. + gi-tilbake ressultat. +åså-varn-færi. diff --git a/tests/test_data/test_files/standard_library_test.haellae b/tests/test_data/test_files/standard_library_test.haellae index a2d4f78..8241d91 100644 --- a/tests/test_data/test_files/standard_library_test.haellae +++ b/tests/test_data/test_files/standard_library_test.haellae @@ -1,4 +1,19 @@ x ære-samma-som en-bråtæ-beståænes-av 1 å 2 å-det-var-det. y ære-samma-som en-bråtæ-beståænes-av 3 å 4 å-det-var-det. -spøtt-ut kjør slå_sammen_bråtæne med x å y å-det-var-det. \ No newline at end of file +spøtt-ut kjør slå_sammen_bråtæne med x å y å-det-var-det. + +spøtt-ut kjør ær_primtall med 2 å-det-var-det. +spøtt-ut kjør ær_primtall med 4 å-det-var-det. +spøtt-ut kjør ær_primtall med 25 å-det-var-det. + +spøtt-ut kjør absolutt_værrdi med 2 minusær 4 å-det-var-det. +spøtt-ut kjør absolutt_værrdi med 4 minusær 2 å-det-var-det. + +spøtt-ut kjør opphøyd_i med 2 å 8 å-det-var-det. + +spøtt-ut kjør kartlegg med + en-fungsjon såm-brukær n såm-gjør gi-tilbake n plussær 1.åså-varn-færi +å + en-bråtæ-beståænes-av 1 å 2 å-det-var-det +å-det-var-det. \ No newline at end of file diff --git a/tests/test_data/test_solutions/standard_library_test_c.txt b/tests/test_data/test_solutions/standard_library_test_c.txt index 12bae17..7dd1a5f 100644 --- a/tests/test_data/test_solutions/standard_library_test_c.txt +++ b/tests/test_data/test_solutions/standard_library_test_c.txt @@ -1 +1,8 @@ [1, 2, 3, 4] +True +False +False +2 +2 +256 +[2, 3]