3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-12-23 19:22:40 +01:00

CGrammar: Support long long suffix on constants; add .0 to floating pointer constants when omitted

This commit is contained in:
Pragmatic Software 2014-06-20 09:12:56 +00:00
parent d7197b6bf6
commit a501557d35
2 changed files with 10 additions and 9 deletions

View File

@ -13,7 +13,7 @@ use warnings;
# These are set automatically by the build/commit script
use constant {
BUILD_NAME => "PBot",
BUILD_REVISION => 659,
BUILD_REVISION => 660,
BUILD_DATE => "2014-06-20",
};

View File

@ -1382,24 +1382,25 @@ constant:
} else {
$return = $item[1];
}
$return .= '0' if $return =~ /\.$/;
}
| /0x[0-9a-f]+[lu]{0,2}/i
| /0x[0-9a-f]+[lu]{0,3}/i
{
$return .= 'unsigned ' if $item[1] =~ s/[Uu]//;
$return .= 'long ' if $item[1] =~ s/[Ll]//;
$return .= 'long ' while $item[1] =~ s/[Ll]//;
$return = "the $return" . "hexadecimal number $item[1]";
}
| /0\d+[lu]{0,2}/i
| /0\d+[lu]{0,3}/i
{
$return .= 'unsigned ' if $item[1] =~ s/[Uu]//;
$return .= 'long ' if $item[1] =~ s/[Ll]//;
$return .= 'long ' while $item[1] =~ s/[Ll]//;
$return = "the $return" . "octal number $item[1]";
}
|/-?[0-9]+[lu]{0,2}/i # integer constant
| /-?[0-9]+[lu]{0,3}/i # integer constant
{
$return = $item[-1];
$return = "long $return" if $return =~ s/[Ll]//;
$return = "unsigned $return" if $return =~ s/[Uu]//;
$return .= "unsigned " if $item[-1] =~ s/[Uu]//;
$return .= "long " while $item[-1] =~ s/[Ll]//;
$return .= $item[-1];
}
| /(?:\'((?:\\\'|(?!\').)*)\')/ # character constant
{