3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-10-03 01:48:38 +02:00

CGrammar: Fix preproc conditionals

This commit is contained in:
Pragmatic Software 2014-06-19 05:16:46 +00:00
parent f898580d33
commit 1272de61fa
2 changed files with 5 additions and 7 deletions

View File

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

View File

@ -1,12 +1,10 @@
# C-to-English Grammar # C-to-English Grammar
# #
# Warning: work-in-progress. Many things are incomplete or non-functional. # Warning: work-in-progress. Some things are incomplete or non-functional.
# #
# todo: # todo:
# 1. the entire syntax for pointers to functions. # 1. the entire syntax for pointers to functions.
# 2. preprocessor directives. (getting there) # 2. preprocessor directives. (getting there)
# 4. functions to handle the nesting levels (ordinal number generator and CPP stack)
# 6. change returns to prints where appropriate.
{ {
my @defined_types = ('`FILE`'); my @defined_types = ('`FILE`');
@ -109,7 +107,7 @@ preproc_conditional:
(elif_parts[matchrule => $rule_name])(?) (elif_parts[matchrule => $rule_name])(?)
(else_parts[matchrule => $rule_name])(?) (else_parts[matchrule => $rule_name])(?)
{ $return .= join('',@{$item[-2]}) . join('',@{$item[-1]}); } { $return .= join('',@{$item[-2]}) . join('',@{$item[-1]}); }
'endif' '#' 'endif'
{ $return .= "End preprocessor conditional.\n"; } { $return .= "End preprocessor conditional.\n"; }
if_line: if_line:
@ -121,7 +119,7 @@ if_line:
{ $return .= "If the preprocessor condition^L $item{constant_expression} is true, then ^L"; } { $return .= "If the preprocessor condition^L $item{constant_expression} is true, then ^L"; }
elif_parts: elif_parts:
('elif' constant_expression ('#' 'elif' constant_expression
{ $return .= "Otherwise, if the preprocessor condition $item{constant_expression} is true, then ^L"; } { $return .= "Otherwise, if the preprocessor condition $item{constant_expression} is true, then ^L"; }
(<matchrule: $rule_name> )[matchrule => $arg{matchrule}](s?) (<matchrule: $rule_name> )[matchrule => $arg{matchrule}](s?)
{ $return .= join('',@{$item[-1]}); } { $return .= join('',@{$item[-1]}); }
@ -129,7 +127,7 @@ elif_parts:
{ $return = join('', @{$item[-1]}); } { $return = join('', @{$item[-1]}); }
else_parts: else_parts:
'else' '#' 'else'
{ $rule_name = $arg{matchrule}; } { $rule_name = $arg{matchrule}; }
(<matchrule: $rule_name>)[matchrule => $arg{matchrule}](s?) (<matchrule: $rule_name>)[matchrule => $arg{matchrule}](s?)
{ $return = "Otherwise, ^L" . join('',@{$item[-1]}); } { $return = "Otherwise, ^L" . join('',@{$item[-1]}); }