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");
 }
 

Reply via email to