Skip to content

Commit 344dfde

Browse files
committed
معکوس کرنے کی سہولت
1 parent 2d1bedd commit 344dfde

4 files changed

Lines changed: 41 additions & 4 deletions

File tree

samples/conditionals.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
something = 2
2+
3+
if something == 1:
4+
print ("Hello")
5+
elif something == 2:
6+
print ("World")
7+
else:
8+
print ("Didn't understand...")

samples/تقریب۔پای

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11

2+
3+
‏from unidecode import unidecode
4+
25
وضح ایک_تقریب ( ایک_دلیل):
36
چھاپ ("میں کچھ کام کر سکتا ہوں!")
47
چھاپ (ایک_دلیل)
58

6-
ایک_تقریب("کچھ کرو!")
9+
ایک_تقریب("کچھ کرو!")
10+
11+
print("Hello world")

src/lex.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,18 @@ def t_NUMBER(t):
163163
import yaml
164164
language_dict = yaml.load(open(args["dictionary"]), Loader=yaml.SafeLoader)
165165

166-
reserved = language_dict.get("reserved")
166+
if args["reverse"]:
167+
reserved = {value:key for key, value in language_dict.get("reserved").items()}
168+
# ------------- Debugging ---------------
169+
# print ("Reversed:", reserved)
170+
# ------------- Debugging ---------------
171+
172+
else:
173+
reserved = language_dict.get("reserved")
174+
# ------------- Debugging ---------------
175+
# print ("normal:", reserved)
176+
# ------------- Debugging ---------------
177+
167178

168179
# List of token names. This is always required
169180
tokens = [
@@ -214,6 +225,8 @@ def t_ID(t):
214225

215226
t.type = reserved.get(t.value,'ID') # Check for reserved words
216227

228+
229+
217230
# ------------- Debugging ---------------
218231
# print ("Type is:", t.type)
219232
# ------------- Debugging ---------------
@@ -225,7 +238,10 @@ def t_ID(t):
225238

226239
return t
227240

228-
t_ID.__doc__ = r'['+language_dict["letters"]["start"]+'-'+language_dict["letters"]["end"]+'_]['+language_dict["numbers"]["start"]+'-'+language_dict["numbers"]["end"]+'_'+language_dict["letters"]["start"]+'-'+language_dict["letters"]["end"]+']*'
241+
if args["reverse"]:
242+
t_ID.__doc__ = r'[a-zA-Z_][a-zA-Z_0-9]*'
243+
else:
244+
t_ID.__doc__ = r'['+language_dict["letters"]["start"]+'-'+language_dict["letters"]["end"]+'_]['+language_dict["numbers"]["start"]+'-'+language_dict["numbers"]["end"]+'_'+language_dict["letters"]["start"]+'-'+language_dict["letters"]["end"]+']*'
229245

230246

231247
# A string containing ignored characters (spaces and tabs)
@@ -237,7 +253,7 @@ def t_error(t):
237253
# print("Illegal character '%s'" % t.value[0])
238254
# ------------- Debugging ---------------
239255

240-
t.value = t.value[0]
256+
t.value = unidecode(t.value[0])
241257
t.lexer.skip(1)
242258

243259
# ------------- Debugging ---------------
@@ -293,6 +309,10 @@ def t_COMMENT(t):
293309
"،": ",",
294310
}
295311

312+
if args["reverse"]:
313+
dots_and_stuff = {value:key for key, value in dots_and_stuff.items()}
314+
# print ("Reversed:", reserved)
315+
296316
for key, value in dots_and_stuff.items():
297317
code = code.replace(key, value)
298318

urdu_python.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
default="./languages/ur/ur_native.lang.yaml", required = False,
2525
help = "The dictionary to use to translate the code.")
2626

27+
ap.add_argument("-r", "--reverse",
28+
action='store_true',
29+
default=False, required = False,
30+
help = "Translate English code to the language of your choice.")
2731

2832

2933
group = ap.add_mutually_exclusive_group(required=False)

0 commit comments

Comments
 (0)