alex / rply

An attempt to port David Beazley's PLY to RPython, and give it a cooler API.
BSD 3-Clause "New" or "Revised" License
381 stars 60 forks source link

Parsing functions with multiple arguments #114

Open Zelatrix opened 2 years ago

Zelatrix commented 2 years ago

I have managed to successfully implement functions with no arguments into my parser and they parser correctly, The way I have it so far also allows me to parse functions with a single argument. But I am not sure how to parse functions with multiple arguments. The code I have for this at the moment is the following:

@self.pg.production('arg : type expr')
 def typed_arg(p):
   return [p[0], p[1]]

# Argument list for functions:
# function f(int x) {
#   print(x);
# }

@self.pg.production('arg_list : arg COMMA arg_list')
def arg_list(p):
  return [p[0]] + p[2]

@self.pg.production('arg_list : ')
def empty_args(p):
  return []
nobodxbodon commented 2 years ago

One example here:

https://github.com/MulanRevive/mulan/blob/fab6f06adda9331b4f234049aee9841e9a91f116/ulang/parser/core.py#L1411

Zelatrix commented 2 years ago

One example here:

https://github.com/MulanRevive/mulan/blob/fab6f06adda9331b4f234049aee9841e9a91f116/ulang/parser/core.py#L1411

Can you explain what's going on here?