Author: kjs
Date: Sat Feb 23 05:05:46 2008
New Revision: 26020
Modified:
trunk/languages/c99/src/parser/actions.pm
trunk/languages/c99/t/spi.t
Log:
[c99] add ternary operator + test.
Modified: trunk/languages/c99/src/parser/actions.pm
==============================================================================
--- trunk/languages/c99/src/parser/actions.pm (original)
+++ trunk/languages/c99/src/parser/actions.pm Sat Feb 23 05:05:46 2008
@@ -198,7 +198,15 @@
}
method conditional_expression($/) {
- make $( $<logical_expression> );
+ my $cond := $( $<logical_expression> );
+ if $<expression> {
+ my $then := $( $<expression>[0] );
+ my $else := $( $<conditional_expression>[0] );
+ make PAST::Op.new( $cond, $then, $else, :pasttype('if'), :node($/) );
+ }
+ else {
+ make $cond;
+ }
}
method postfix_expression_prefix($/, $key) {
Modified: trunk/languages/c99/t/spi.t
==============================================================================
--- trunk/languages/c99/t/spi.t (original)
+++ trunk/languages/c99/t/spi.t Sat Feb 23 05:05:46 2008
@@ -2,7 +2,7 @@
void main() {
- puts("1..5");
+ puts("1..6");
puts("ok 1");
if (0)
@@ -28,5 +28,6 @@
}
puts("ok 5");
+ 1 ? puts("ok 6") : puts("nok 6");
}