From dc7b8d2063dac867f2e87dbe764d2f3df2331e95 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sat, 22 Aug 2009 15:12:15 +0200 Subject: Add support for long long int --- cli/parser.cxx | 120 +++++++++++++++++++++++++++++++++++++++++++++- tests/parser/test-005.cli | 12 +++++ 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; -- cgit v1.1