Ethgoin commited on
Commit
f9ada29
verified
1 Parent(s): 02fd9a1

Update parser.py

Browse files
Files changed (1) hide show
  1. parser.py +29 -6
parser.py CHANGED
@@ -88,13 +88,36 @@ class Parser:
88
  def function_call(self):
89
  func_name = self.current()[0]
90
  self.match(func_name)
91
- self.match("OPEN_PAREN")
92
- arg = None
93
- if self.current()[0] != "CLOSE_PAREN":
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  arg = self.expression()
95
- self.match("CLOSE_PAREN")
96
- self.match("SEMICOLON")
97
- return {"type": "function", "name": func_name, "arg": arg}
 
 
 
 
 
 
 
 
98
 
99
  def expression(self):
100
  left = self.term()
 
88
  def function_call(self):
89
  func_name = self.current()[0]
90
  self.match(func_name)
91
+
92
+ funciones_con_argumento = {
93
+ "CALIBRATE", "COPY_FILE", "DELETE_FILE", "MOVE_BACKWARD", "MOVE_FORWARD", "MOVE_TO",
94
+ "PRINT", "RENAME_FILE", "ROTATE", "SAVE_FILE", "SCAN", "SET", "SET_SPEED", "UPLOAD",
95
+ "UPLOAD_FILE", "WAIT"
96
+ }
97
+
98
+ funciones_sin_argumento = {
99
+ "ACTIVATE_ALARM", "ACTIVATE_SENSOR", "BREAK", "CHARGE_BATTERY", "CHECK_BATTERY",
100
+ "CLOSE_DOOR", "CONTINUE", "DEACTIVATE_ALARM", "DEACTIVATE_SENSOR", "DECREASE_SPEED",
101
+ "DOWNLOAD", "REBOOT", "READ_SENSOR", "RESET", "RESUME", "REVERSE", "SHUTDOWN",
102
+ "SHUT_OFF", "START", "STOP", "STOP_IMMEDIATELY", "TOGGLE_LIGHT", "TURN_DOWN",
103
+ "TURN_LEFT", "TURN_RIGHT", "TURN_UP", "UNLOCK", "LOG", "INIT", "LOCK", "LOW_BATTERY",
104
+ "OPEN_DOOR", "PAUSE"
105
+ }
106
+
107
+ if func_name in funciones_con_argumento:
108
+ self.match("OPEN_PAREN")
109
  arg = self.expression()
110
+ self.match("CLOSE_PAREN")
111
+ self.match("SEMICOLON")
112
+ return {"type": "function", "name": func_name, "arg": arg}
113
+
114
+ elif func_name in funciones_sin_argumento:
115
+ self.match("SEMICOLON")
116
+ return {"type": "function", "name": func_name, "arg": None}
117
+
118
+ else:
119
+ raise SyntaxError(f"Funci贸n '{func_name}' no reconocida o mal definida.")
120
+
121
 
122
  def expression(self):
123
  left = self.term()