Skip to content

Commit

Permalink
multi line code
Browse files Browse the repository at this point in the history
  • Loading branch information
Aryangp committed Jan 1, 2024
1 parent b4ff127 commit e5a597c
Show file tree
Hide file tree
Showing 4 changed files with 260 additions and 63 deletions.
Binary file modified __pycache__/original.cpython-311.pyc
Binary file not shown.
37 changes: 27 additions & 10 deletions grammar.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
statments : NEWLINE* expr (NEWLINE + expr)* NEWLINE*

expr:KEYWORD :pik IDENTIFIER EQ expr
:compr-expr ((KEYWORD:AND|KEQWORD:OR) comp-expr)
comp-expr :not comp_expr
Expand All @@ -19,13 +21,28 @@ atom: INT|FLOAT|STRING|IDENTIFIER
:fun-def

list_expr: LSQUARE (expr (COMMA expr)*)? RSQUARE
if-expr:KEYWORD:if expr KEYWORD:then expr
(KEYWORD:elif expr KEYWORD:then expr)*
(KEYWORD:else expr)?

for-expr :KEYWORD:for IDENTIFIER EO expr KEYWORD:to expr
(KEYWORD:step expr)? KEYWORD:then expr
while-expr:KEYWORD:while expr KEYWORD:then expr
func-def :KEYWORD:pokeball IDENTIFIER?
LPAREM (IDENTIFIER(COMMA IDENTIFIER)*) RPAREM
ARROW expr
if-expr : KEYWORD:IF expr KEYWORD:THEN
(expr if-expr-b|if-expr-c?)
| (NEWLINE statements KEYWORD:END|if-expr-b|if-expr-c)

if-expr-b : KEYWORD:ELIF expr KEYWORD:THEN
(expr if-expr-b|if-expr-c?)
| (NEWLINE statements KEYWORD:END|if-expr-b|if-expr-c)

if-expr-c : KEYWORD:ELSE
expr
| (NEWLINE statements KEYWORD:END)

for-expr : KEYWORD:FOR IDENTIFIER EQ expr KEYWORD:TO expr
(KEYWORD:STEP expr)? KEYWORD:THEN
expr
| (NEWLINE statements KEYWORD:END)

while-expr : KEYWORD:WHILE expr KEYWORD:THEN
expr
| (NEWLINE statements KEYWORD:END)

func-def : KEYWORD:FUN IDENTIFIER?
LPAREN (IDENTIFIER (COMMA IDENTIFIER)*)? RPAREN
(ARROW expr)
| (NEWLINE statements KEYWORD:END)
6 changes: 5 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
if __name__=="__main__":
while True:
text=input("gpzer > ")
if text.strip()=="":continue
result,error=original.run("test.gp",text)
if error:
print(colored(error.as_string(),"red"))
elif result:
print(repr(result))
if len(result.elements)==1:
print(repr(result.elements[0]))
else:
print(repr(result))
Loading

0 comments on commit e5a597c

Please sign in to comment.