Fixed problem with 'return' parsing which was causing the factorial example to fail

git-svn-id: http://picoc.googlecode.com/svn/trunk@185 21eae674-98b7-11dd-bd71-f92a316d2d60
This commit is contained in:
zik.saleeba 2009-03-10 02:18:17 +00:00
parent bee7e23212
commit 9769bd432b
4 changed files with 21 additions and 7 deletions

View file

@ -269,6 +269,7 @@ int ParseStatement(struct ParseState *Parser)
case TokenLeftBrace:
ParseBlock(Parser, FALSE, TRUE);
CheckTrailingSemicolon = FALSE;
break;
case TokenIf:
@ -451,6 +452,8 @@ int ParseStatement(struct ParseState *Parser)
memcpy(TopStackFrame->ReturnValue->Val, CValue->Val, TypeSizeValue(CValue));
Parser->Mode = RunModeReturn;
}
else
ExpressionParse(Parser, &CValue);
break;
default:

View file

@ -1,10 +1,12 @@
int fact(int i) {
if (i < 2) {
return i;
}
return (i * fact(i - 1));
int factorial(int i)
{
if (i < 2)
return i;
else
return (i * factorial(i - 1));
}
fact(5)
fact(6)
int Count;
for (Count = 1; Count <= 10; Count++)
printf("%d\n", factorial(Count));

View file

@ -1,2 +1,10 @@
1
2
6
24
120
720
5040
40320
362880
3628800

View file

@ -12,6 +12,7 @@ TESTS= 00_assignment.test \
12_hashdefine.test \
13_integer_literals.test \
14_if.test \
15_recursion.test \
16_nesting.test \
17_enum.test \
18_include.test