enigma-dev/enigma-dev — pull request #600 by sorlok (2013-12-30 22:23:02+00:00)
Title: Bugfix: {if (x) (y()).z = a;} would fail to parse correctly.

This fixes Issue: enigma-dev/enigma-dev/issues/599

First fix: a memory leak in parser_add_semicolons().

Second fix: GM syntax requires parentheses around instance_create if using the variable after, like so:
```
(instance_create(1,1,a)).x = 100;
```

This led to a parse error if placed as the body in a single-line brace-less if statement.

Since the parens are superfluous in Enigma's scripting syntax, I fixed the problem by performing a regex replacement inside "pareser_reinterpret()", which amounts to:
```
)(nnnn()). => )nnnn().
```

I tested this on the following projects, and confirmed that the replacement works as expected:
1. Iji
2. My own simplified test case (https://drive.google.com/file/d/0B1P7NepPcOslc3hVRTl0QV9ySUU/edit?usp=sharing)

I tested this on the following projects, and confirmed that NO false-positives were generated:
1. Project Mario
2. Platform Engine
3. Isometric Mario
4. Bloom and Glow Test
5. Fake 3D
6. Light and Shadow Engine
7. Backwards Gaming Engine

Please let me know if further testing is necessary.