diff options
Diffstat (limited to 'MoonParser/moon_parser.cpp')
-rw-r--r-- | MoonParser/moon_parser.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/MoonParser/moon_parser.cpp b/MoonParser/moon_parser.cpp index ec8df38..8917e58 100644 --- a/MoonParser/moon_parser.cpp +++ b/MoonParser/moon_parser.cpp | |||
@@ -312,30 +312,24 @@ rule Parens = sym('(') >> *SpaceBreak >> Exp >> *SpaceBreak >> sym(')'); | |||
312 | rule Callable = Space >> Variable | SelfName | VarArg | Parens; | 312 | rule Callable = Space >> Variable | SelfName | VarArg | Parens; |
313 | rule FnArgsExpList = Exp >> *((Break | sym(',')) >> White >> Exp); | 313 | rule FnArgsExpList = Exp >> *((Break | sym(',')) >> White >> Exp); |
314 | 314 | ||
315 | rule FnArgs = Seperator >> | 315 | rule FnArgs = (symx('(') >> *SpaceBreak >> -FnArgsExpList >> *SpaceBreak >> sym(')')) | |
316 | ( | 316 | (sym('!') >> not_(expr('='))); |
317 | ( | ||
318 | symx('(') >> *SpaceBreak >> -FnArgsExpList >> *SpaceBreak >> sym(')') | ||
319 | ) | ( | ||
320 | sym('!') >> not_(expr('=')) | ||
321 | ) | ||
322 | ); | ||
323 | 317 | ||
324 | extern rule ChainItems, DotChainItem, ColonChain; | 318 | extern rule ChainItems, DotChainItem, ColonChain; |
325 | 319 | ||
326 | rule chain_call = (Callable | String) >> ChainItems; | 320 | rule chain_call = (Callable | String) >> ChainItems; |
327 | rule chain_item = not_(set(".\\")) >> ChainItems; | 321 | rule chain_item = and_(set(".\\")) >> ChainItems; |
328 | rule chain_dot_chain = DotChainItem >> -ChainItems; | 322 | rule chain_dot_chain = DotChainItem >> -ChainItems; |
329 | 323 | ||
330 | rule Chain = | 324 | rule Chain = Seperator >> ( |
331 | chain_call | | 325 | chain_call | |
332 | chain_item | | 326 | chain_item | |
333 | Space >> (chain_dot_chain | ColonChain); | 327 | Space >> (chain_dot_chain | ColonChain)); |
334 | 328 | ||
335 | extern rule ChainItem; | 329 | extern rule ChainItem; |
336 | 330 | ||
337 | rule chain_with_colon = +ChainItem >> -ColonChain; | 331 | rule chain_with_colon = +ChainItem >> -ColonChain; |
338 | rule ChainItems = Seperator >> (chain_with_colon | ColonChain); | 332 | rule ChainItems = chain_with_colon | ColonChain; |
339 | 333 | ||
340 | extern rule Invoke, Slice; | 334 | extern rule Invoke, Slice; |
341 | 335 | ||
@@ -355,11 +349,11 @@ rule Slice = | |||
355 | (sym(',') >> Exp | default_value) >> | 349 | (sym(',') >> Exp | default_value) >> |
356 | sym(']'); | 350 | sym(']'); |
357 | 351 | ||
358 | rule Invoke = | 352 | rule Invoke = Seperator >> ( |
359 | FnArgs | | 353 | FnArgs | |
360 | SingleString | | 354 | SingleString | |
361 | DoubleString | | 355 | DoubleString | |
362 | and_(expr('[')) >> LuaString; | 356 | and_(expr('[')) >> LuaString); |
363 | 357 | ||
364 | extern rule TableValueList, TableLitLine; | 358 | extern rule TableValueList, TableLitLine; |
365 | 359 | ||
@@ -448,7 +442,7 @@ rule ExpList = Seperator >> Exp >> *(sym(',') >> Exp); | |||
448 | rule ExpListLow = Seperator >> Exp >> *((sym(',') | sym(';')) >> Exp); | 442 | rule ExpListLow = Seperator >> Exp >> *((sym(',') | sym(';')) >> Exp); |
449 | 443 | ||
450 | rule ArgLine = CheckIndent >> Exp >> *(sym(',') >> Exp); | 444 | rule ArgLine = CheckIndent >> Exp >> *(sym(',') >> Exp); |
451 | rule ArgBlock = Seperator >> ArgLine >> *(sym(',') >> SpaceBreak >> ArgLine) >> PopIndent; | 445 | rule ArgBlock = ArgLine >> *(sym(',') >> SpaceBreak >> ArgLine) >> PopIndent; |
452 | 446 | ||
453 | rule invoke_args_with_table = | 447 | rule invoke_args_with_table = |
454 | sym(',') >> | 448 | sym(',') >> |
@@ -458,9 +452,9 @@ rule invoke_args_with_table = | |||
458 | ); | 452 | ); |
459 | 453 | ||
460 | rule InvokeArgs = | 454 | rule InvokeArgs = |
461 | not_(expr('-')) >> | 455 | not_(expr('-')) >> Seperator >> |
462 | ( | 456 | ( |
463 | ExpList >> -(invoke_args_with_table | TableBlock) | | 457 | Exp >> *(sym(',') >> Exp) >> -(invoke_args_with_table | TableBlock) | |
464 | TableBlock | 458 | TableBlock |
465 | ); | 459 | ); |
466 | 460 | ||