summaryrefslogtreecommitdiff
path: root/vala/valascanner.vala
diff options
context:
space:
mode:
Diffstat (limited to 'vala/valascanner.vala')
-rw-r--r--vala/valascanner.vala32
1 files changed, 26 insertions, 6 deletions
diff --git a/vala/valascanner.vala b/vala/valascanner.vala
index 3c87115e1..f6f4cd7bf 100644
--- a/vala/valascanner.vala
+++ b/vala/valascanner.vala
@@ -607,12 +607,32 @@ public class Vala.Scanner {
var type = TokenType.INTEGER_LITERAL;
// integer part
- if (current < end - 2 && current[0] == '0'
- && current[1] == 'x' && current[2].isxdigit ()) {
- // hexadecimal integer literal
- current += 2;
- while (current < end && current[0].isxdigit ()) {
- current++;
+ if (current < end - 2 && current[0] == '0') {
+ switch (current[1]) {
+ case 'x':
+ case 'X':
+ // hexadecimal integer literal
+ current += 2;
+ while (current < end && current[0].isxdigit ()) {
+ current++;
+ }
+ break;
+ case 'b':
+ case 'B':
+ case 'o':
+ case 'O':
+ // binary integer literal or octal integer literal
+ current += 2;
+ while (current < end && current[0].isdigit ()) {
+ current++;
+ }
+ break;
+ default:
+ // decimal number (also may be octal integer)
+ while (current < end && current[0].isdigit ()) {
+ current++;
+ }
+ break;
}
} else {
// decimal number