summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-08-22 15:12:15 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-08-22 15:12:15 +0200
commitdc7b8d2063dac867f2e87dbe764d2f3df2331e95 (patch)
treea1fbb118067bd285570082f171078a6699e22465
parent66455ad2d34c46650a798738c53bb550d250ab04 (diff)
Add support for long long int
-rw-r--r--cli/parser.cxx120
-rw-r--r--tests/parser/test-005.cli12
2 files changed, 130 insertions, 2 deletions
diff --git a/cli/parser.cxx b/cli/parser.cxx
index e63a7b6..4e999c2 100644
--- a/cli/parser.cxx
+++ b/cli/parser.cxx
@@ -456,6 +456,18 @@ fundamental_type (Token& t)
switch ((t = lexer_->next ()).keyword ())
{
case Token::k_short:
+ {
+ switch ((t = lexer_->next ()).keyword ())
+ {
+ case Token::k_int:
+ {
+ t = lexer_->next ();
+ }
+ default:
+ break;
+ }
+ break;
+ }
case Token::k_long:
{
switch ((t = lexer_->next ()).keyword ())
@@ -463,6 +475,20 @@ fundamental_type (Token& t)
case Token::k_int:
{
t = lexer_->next ();
+ break;
+ }
+ case Token::k_long:
+ {
+ switch ((t = lexer_->next ()).keyword ())
+ {
+ case Token::k_int:
+ {
+ t = lexer_->next ();
+ }
+ default:
+ break;
+ }
+ break;
}
default:
break;
@@ -474,9 +500,22 @@ fundamental_type (Token& t)
switch ((t = lexer_->next ()).keyword ())
{
case Token::k_short:
- case Token::k_long:
{
t = lexer_->next ();
+ break;
+ }
+ case Token::k_long:
+ {
+ switch ((t = lexer_->next ()).keyword ())
+ {
+ case Token::k_long:
+ {
+ t = lexer_->next ();
+ }
+ default:
+ break;
+ }
+ break;
}
default:
break;
@@ -514,6 +553,43 @@ fundamental_type (Token& t)
}
break;
}
+ case Token::k_long:
+ {
+ switch ((t = lexer_->next ()).keyword ())
+ {
+ case Token::k_signed:
+ case Token::k_unsigned:
+ {
+ switch ((t = lexer_->next ()).keyword ())
+ {
+ case Token::k_int:
+ {
+ t = lexer_->next ();
+ }
+ default:
+ break;
+ }
+ break;
+ }
+ case Token::k_int:
+ {
+ switch ((t = lexer_->next ()).keyword ())
+ {
+ case Token::k_signed:
+ case Token::k_unsigned:
+ {
+ t = lexer_->next ();
+ }
+ default:
+ break;
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ break;
+ }
case Token::k_int:
{
switch ((t = lexer_->next ()).keyword ())
@@ -550,9 +626,21 @@ fundamental_type (Token& t)
switch ((t = lexer_->next ()).keyword ())
{
case Token::k_short:
- case Token::k_long:
{
t = lexer_->next ();
+ break;
+ }
+ case Token::k_long:
+ {
+ switch ((t = lexer_->next ()).keyword ())
+ {
+ case Token::k_long:
+ {
+ t = lexer_->next ();
+ }
+ default:
+ break;
+ }
}
default:
break;
@@ -560,6 +648,19 @@ fundamental_type (Token& t)
break;
}
case Token::k_short:
+ {
+ switch ((t = lexer_->next ()).keyword ())
+ {
+ case Token::k_signed:
+ case Token::k_unsigned:
+ {
+ t = lexer_->next ();
+ }
+ default:
+ break;
+ }
+ break;
+ }
case Token::k_long:
{
switch ((t = lexer_->next ()).keyword ())
@@ -568,6 +669,21 @@ fundamental_type (Token& t)
case Token::k_unsigned:
{
t = lexer_->next ();
+ break;
+ }
+ case Token::k_long:
+ {
+ switch ((t = lexer_->next ()).keyword ())
+ {
+ case Token::k_signed:
+ case Token::k_unsigned:
+ {
+ t = lexer_->next ();
+ }
+ default:
+ break;
+ }
+ break;
}
default:
break;
diff --git a/tests/parser/test-005.cli b/tests/parser/test-005.cli
index 9a43103..7798552 100644
--- a/tests/parser/test-005.cli
+++ b/tests/parser/test-005.cli
@@ -29,6 +29,18 @@ class c
char signed -i18;
unsigned char -i19;
char unsigned -i20;
+
+ long long -ll1;
+ long long int -ll2;
+ long long unsigned -ll3;
+ int long long -ll4;
+ unsigned long long -ll5;
+ long long int unsigned -ll6;
+ long long unsigned int -ll7;
+ unsigned long long int -ll8;
+ unsigned int long long -ll9;
+ int long long unsigned -ll10;
+ int unsigned long long -ll11;
double -d1;
long double -d2;