11import time , os , sys , getpass , re , string
22
3+ #Note: Make modules to contribute to this language
4+
35fp = input ('FilePath: ' )
46
57if '.pys' in fp :#hmmmm
@@ -24,12 +26,16 @@ def wait_until(somepredicate, timeout, period=0.25, *args, **kwargs):
2426 time .sleep (period )
2527 return False
2628
29+ #all errors
2730class InvalidVariableError (Exception ):
2831 pass
2932
3033class InvalidSyntaxError (Exception ):
3134 pass
3235
36+ class InvalidIndentationError (Exception ):
37+ pass
38+
3339class Error (Exception ):
3440 pass
3541
@@ -45,43 +51,149 @@ class Error(Exception):
4551input3 = "Undefined input"
4652
4753
48- def pTAG ():
54+ def WINDOWalert ():#add f'string
4955 try :
50- if '</p> ' in lines : #maybe replace </p> with </>?
51- wrd = '<p>'
56+ if '"); ' in lines or "');" in lines or "`);" in lines :
57+ wrd = "window.alert("
5258 res = lines .partition (wrd )[2 ]
53- res = res .replace ('</p>' , '' )
54- #res = res.replace(' ', '')
55- res = res .replace ('{getChar1}' , getChar1 )
56- res = res .replace ('{getChar2}' , getChar2 )
57- res = res .replace ('{getChar3}' , getChar3 )
58- res = res .replace ("{{input1}}" , input1 )
59- res = res .replace ("{{input2}}" , input2 )
60- res = res .replace ("{{input3}}" , input3 )
61- res = res .replace ("{{var1}}" , var1 )
59+ res = res .replace ("\" );" ,"" )
60+ res = res .replace ('`);' ,"" )
61+ res = res .replace ('\' );' ,"" )
62+ res = res .replace ("/n" , "\n " )
63+ res = res .replace ("/t" , "\t " )
64+ if "\" " in res :
65+ split_string = res .split ("\" );" , - 1 )
66+ elif "'" in res :
67+ split_string = res .split ("\' );" , - 1 )
68+ elif "`" in res :
69+ split_string = res .split ("`);" , - 1 )
70+ else :
71+ raise InvalidSyntaxError ("The 'window.alert' statement is missing quotations!" )
72+ res = split_string [0 ]
73+ res = res .replace ("\" );" ,"" )
74+ res = res .replace ('`);' ,"" )
75+ res = res .replace ('\' );' ,"" )
76+ res = res .replace ("/n" , "\n " )
77+ res = res .replace ("/t" , "\t " )
78+ #colors: res = res.replace("{red}", red)
79+ res = res .replace ('"' , "" )
80+ res = res .replace ("'" , "" )
81+ res = res .replace ("`" , "" )
82+ res = res .replace (");" ,"" )
6283
6384 if "{{" in res :
6485 if "}}" in res :
6586 start = "{{"
6687 end = "}}"
6788 check = res [res .find (start ) + len (start ):res .rfind (end )]
68-
6989 if check in allvars :
70- res = res .replace ('{{' , '' )
71- res = res .replace ('}}' , '' )
72- e = allvars [check ]
73- res = res .replace (check , str (e ))
90+ res = res .replace ("{{" , "" )
91+ res = res .replace ("}}" , "" )
92+ dffdfdfdf = allvars [check ]
93+ res = res .replace (check , str (dffdfdfdf ))
7494 else :
75- exit ()#add error
95+ raise InvalidVariableError (f"'{ var } ' variable does not exist!" )
96+ print (res , end = "" )
97+ else :
98+ raise InvalidSyntaxError ("The 'window.alert' statement must have a closing ');!" )
99+ except :
100+ raise InvalidSyntaxError ("The 'window.alert' statement must have a closing ');!" )
76101
77- #wait_until("</p>", 0)
78- split_string = res .split ("</p>" , - 1 )
102+ def alert ():
103+ try :
104+ if '");' in lines or "');" in lines or "`);" in lines :
105+ wrd = "alert("
106+ res = lines .partition (wrd )[2 ]
107+ res = res .replace ("\" );" ,"" )
108+ res = res .replace ('`);' ,"" )
109+ res = res .replace ('\' );' ,"" )
110+ res = res .replace ("/n" , "\n " )
111+ res = res .replace ("/t" , "\t " )
112+ if "\" " in res :
113+ split_string = res .split ("\" );" , - 1 )
114+ elif "'" in res :
115+ split_string = res .split ("\' );" , - 1 )
116+ elif "`" in res :
117+ split_string = res .split ("`);" , - 1 )
118+ else :
119+ raise InvalidSyntaxError ("The 'alert' statement is missing quotations!" )
79120 res = split_string [0 ]
80- print (res )
121+ res = res .replace ("\" );" ,"" )
122+ res = res .replace ('`);' ,"" )
123+ res = res .replace ('\' );' ,"" )
124+ res = res .replace ("/n" , "\n " )
125+ res = res .replace ("/t" , "\t " )
126+ #colors: res = res.replace("{red}", red)
127+ res = res .replace ('"' , "" )
128+ res = res .replace ("'" , "" )
129+ res = res .replace ("`" , "" )
130+ res = res .replace (");" ,"" )
131+
132+ if "{{" in res :
133+ if "}}" in res :
134+ start = "{{"
135+ end = "}}"
136+ check = res [res .find (start ) + len (start ):res .rfind (end )]
137+ if check in allvars :
138+ res = res .replace ("{{" , "" )
139+ res = res .replace ("}}" , "" )
140+ dffdfdfdf = allvars [check ]
141+ res = res .replace (check , str (dffdfdfdf ))
142+ else :
143+ raise InvalidVariableError (f"'{ var } ' variable does not exist!" )
144+ print (res , end = "" )
81145 else :
82- pass
146+ raise InvalidSyntaxError ( "The 'alert' statement must have a closing ');!" )
83147 except :
84- exit ()
148+ raise InvalidSyntaxError ("The 'alert' statement must have a closing ');!" )
149+
150+ def CONSOLEprint ():
151+ try :
152+ if '");' in lines or "');" in lines or "`);" in lines :
153+ wrd = "window.alert("
154+ res = lines .partition (wrd )[2 ]
155+ res = res .replace ("\" );" ,"" )
156+ res = res .replace ('`);' ,"" )
157+ res = res .replace ('\' );' ,"" )
158+ res = res .replace ("/n" , "\n " )
159+ res = res .replace ("/t" , "\t " )
160+ if "\" " in res :
161+ split_string = res .split ("\" );" , - 1 )
162+ elif "'" in res :
163+ split_string = res .split ("\' );" , - 1 )
164+ elif "`" in res :
165+ split_string = res .split ("`);" , - 1 )
166+ else :
167+ raise InvalidSyntaxError ("The 'console.print' statement is missing quotations!" )
168+ res = split_string [0 ]
169+ res = res .replace ("\" );" ,"" )
170+ res = res .replace ('`);' ,"" )
171+ res = res .replace ('\' );' ,"" )
172+ res = res .replace ("/n" , "\n " )
173+ res = res .replace ("/t" , "\t " )
174+ #colors: res = res.replace("{red}", red)
175+ res = res .replace ('"' , "" )
176+ res = res .replace ("'" , "" )
177+ res = res .replace ("`" , "" )
178+ res = res .replace (");" ,"" )
179+
180+ if "{{" in res :
181+ if "}}" in res :
182+ start = "{{"
183+ end = "}}"
184+ check = res [res .find (start ) + len (start ):res .rfind (end )]
185+ if check in allvars :
186+ res = res .replace ("{{" , "" )
187+ res = res .replace ("}}" , "" )
188+ dffdfdfdf = allvars [check ]
189+ res = res .replace (check , str (dffdfdfdf ))
190+ else :
191+ raise InvalidVariableError (f"'{ var } ' variable does not exist!" )
192+ print (res , end = "" )
193+ else :
194+ raise InvalidSyntaxError ("The 'console.print' statement must have a closing ');!" )
195+ except :
196+ raise InvalidSyntaxError ("The 'console.print' statement must have a closing ');!" )
85197
86198
87199newvar = 0
@@ -103,21 +215,28 @@ def pTAG():
103215 if lines == '' :
104216 pass
105217 elif lines in string .whitespace :
106- pass
218+ raise InvalidIndentationError ( "Your indentation does not fit the other statements!" )
107219 elif "/*" in lines :
108220 pass
109221 wait_until ("*/" , 0 )
110222 elif "//" in lines :
111223 pass
112224 lines = lines .rstrip ()
113225
226+ '''
227+ elif " " in lines or "\t " in lines or " " in lines:
228+ raise InvalidIndentationError(f"line {line}, Your indentation does not fit the other statements!")
229+ '''
230+
114231 '''
115232 Note that `;`'s are strictly required in this language
116233 '''
117234
118235 if "//" in lines :
119236 pass
120237 read_line = 0
238+ elif "import(\" time\" )" in lines or "import('time')" in lines :
239+ time_module = True
121240 elif "var " in lines :
122241 wrd = "var "
123242 newvar = lines .partition (wrd )[2 ]
@@ -174,6 +293,8 @@ def pTAG():
174293 split_string = var .split (");" , - 1 )
175294 var .replace (');' ,'' )
176295 var .replace ('\" ' ,"" )
296+ var .replace ('\' ' ,"" )
297+ var .replace ('`' ,"" )
177298 var = split_string [0 ]
178299 var .strip (");" )
179300
@@ -191,6 +312,8 @@ def pTAG():
191312 split_string = var .split (");" , - 1 )
192313 var .replace (');' ,'' )
193314 var .replace ('\" ' ,"" )
315+ var .replace ('\' ' ,"" )
316+ var .replace ('`' ,"" )
194317 var = split_string [0 ]
195318 var .strip (");" )
196319
@@ -208,6 +331,8 @@ def pTAG():
208331 split_string = var .split (");" , - 1 )
209332 var .replace (');' ,'' )
210333 var .replace ('\" ' ,"" )
334+ var .replace ('\' ' ,"" )
335+ var .replace ('`' ,"" )
211336 var = split_string [0 ]
212337 var .strip (");" )
213338
@@ -222,7 +347,12 @@ def pTAG():
222347
223348
224349 elif "window.alert(" in lines :
225- wrd = "window.alert("
350+ WINDOWalert ()
351+ elif "console.print(" in lines :
352+ CONSOLEprint ()
353+ elif "alert(" in lines :
354+ alert ()
226355
356+
227357 else :
228358 pass
0 commit comments