@@ -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
0 commit comments