Author: manjula
Date: 2005-03-16 05:54:43 -0500 (Wed, 16 Mar 2005)
New Revision: 41883
Modified:
trunk/mcs/mbas/ChangeLog
trunk/mcs/mbas/mb-parser.jay
Log:
Support 'expression TO expression' case clause for select statement
Modified: trunk/mcs/mbas/ChangeLog
===================================================================
--- trunk/mcs/mbas/ChangeLog 2005-03-16 10:17:17 UTC (rev 41882)
+++ trunk/mcs/mbas/ChangeLog 2005-03-16 10:54:43 UTC (rev 41883)
@@ -1,3 +1,7 @@
+2005-03-16 Manjula GHM <[EMAIL PROTECTED]>
+ * mb-parser.jay:
+ Support 'expression TO expression' case clause for select
statement
+
2005-03-15 Satya Sudha K <[EMAIL PROTECTED]>
* mb-parser.jay :
* expression.cs :
Modified: trunk/mcs/mbas/mb-parser.jay
===================================================================
--- trunk/mcs/mbas/mb-parser.jay 2005-03-16 10:17:17 UTC (rev 41882)
+++ trunk/mcs/mbas/mb-parser.jay 2005-03-16 10:54:43 UTC (rev 41883)
@@ -3863,10 +3863,15 @@
case_clauses
: case_clause
{
- ArrayList labels = new ArrayList ();
+ if ($1 is ArrayList) //From expression TO expression
+ $$ = $1;
+ else {
- labels.Add ($1);
- $$ = labels;
+ ArrayList labels = new ArrayList ();
+
+ labels.Add ($1);
+ $$ = labels;
+ }
}
| case_clauses COMMA case_clause
{
@@ -3883,6 +3888,25 @@
{
$$ = new SwitchLabel ((Expression) $1, lexer.Location);
}
+ | expression TO expression
+ {
+ //FIXME: need to handle when expressions are character strings.
+ Constant start = (Constant) $1;
+ Constant end = (Constant) $3;
+ int i = 0, s = 0, e = 0;
+ Location l = lexer.Location ;
+ ArrayList labels = new ArrayList ();
+
+ if (start != null)
+ s = (int) start.GetValue ();
+ if(end != null)
+ e = (int) end.GetValue ();
+ for(i = s; i <= e; i++) {
+ labels.Add(new SwitchLabel ((Expression)new
IntLiteral(i), l));
+ }
+ $$ = labels;
+ }
+
;
opt_is
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches