From 6295b0f5031deea2834aac5d068a15b73e37e62e Mon Sep 17 00:00:00 2001 From: Pragmatic Software Date: Mon, 7 Jul 2014 09:15:46 +0000 Subject: [PATCH] CGrammar: Add _Atomic --- PBot/VERSION.pm | 2 +- modules/c2english.pl | 2 +- modules/c2english/CGrammar.pm | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/PBot/VERSION.pm b/PBot/VERSION.pm index ff4d45ab..962062aa 100644 --- a/PBot/VERSION.pm +++ b/PBot/VERSION.pm @@ -13,7 +13,7 @@ use warnings; # These are set automatically by the build/commit script use constant { BUILD_NAME => "PBot", - BUILD_REVISION => 714, + BUILD_REVISION => 715, BUILD_DATE => "2014-07-07", }; diff --git a/modules/c2english.pl b/modules/c2english.pl index eecaff36..013a1633 100755 --- a/modules/c2english.pl +++ b/modules/c2english.pl @@ -19,7 +19,7 @@ if($code =~ s/^-f\s+//) { } my ($has_function, $has_main, $got_nomain); -my $prelude_base = "#define _XOPEN_SOURCE 9001\n#define __USE_XOPEN\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#define _Static_assert(a, b)\n\n"; +my $prelude_base = "#define _XOPEN_SOURCE 9001\n#define __USE_XOPEN\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#define _Atomic\n#define _Static_assert(a, b)\n\n"; my $prelude = $prelude_base; print "code before: [$code]\n" if $debug; diff --git a/modules/c2english/CGrammar.pm b/modules/c2english/CGrammar.pm index f76828bc..ebb875c7 100644 --- a/modules/c2english/CGrammar.pm +++ b/modules/c2english/CGrammar.pm @@ -1605,6 +1605,13 @@ storage_class_specifier: type_qualifier: 'const' | 'volatile' + | 'restrict' + | '_Atomic' + { $return = 'atomic'; } + +atomic_type_specifier: + '_Atomic' '(' type_name ')' + { $return = "atomic $item{type_name}"; } type_specifier: /\s*/ ('void' | 'double' | 'float' | 'char' | 'short' | 'int' | 'long' @@ -1630,6 +1637,7 @@ type_specifier: | 'clock_t' | 'time_t' | struct_or_union_specifier | enum_specifier + | atomic_type_specifier | typedef_name) .../\W/ { $return = $item[3]; }