mirror of
https://github.com/pragma-/pbot.git
synced 2024-11-26 22:09:26 +01:00
CGrammar: Correct placement of "to" in conditional operator; restore "Begin block" and "End block" for nested compound statements
This commit is contained in:
parent
3e47f6bc58
commit
fd89a4d0f4
@ -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 => 739,
|
BUILD_REVISION => 740,
|
||||||
BUILD_DATE => "2014-07-17",
|
BUILD_DATE => "2014-07-17",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ block_item_list:
|
|||||||
|
|
||||||
block_item:
|
block_item:
|
||||||
declaration
|
declaration
|
||||||
| statement
|
| statement[context => "$arg{context}|block item"]
|
||||||
| preproc
|
| preproc
|
||||||
| comment
|
| comment
|
||||||
|
|
||||||
@ -205,7 +205,13 @@ compound_statement:
|
|||||||
{
|
{
|
||||||
my $block_items = join('', @{$item{'block_item_list(s?)'}});
|
my $block_items = join('', @{$item{'block_item_list(s?)'}});
|
||||||
|
|
||||||
$return = "Begin new block.\n" if not $arg{context};
|
if ($arg{context} =~ /block item/
|
||||||
|
and $arg{context} !~ /do loop$/
|
||||||
|
and $arg{context} !~ /if statement$/
|
||||||
|
and $arg{context} !~ /switch$/
|
||||||
|
and $arg{context} !~ /else block$/) {
|
||||||
|
$return = "Begin new block.\n";
|
||||||
|
}
|
||||||
|
|
||||||
if ($block_items) {
|
if ($block_items) {
|
||||||
$return .= $block_items;
|
$return .= $block_items;
|
||||||
@ -213,16 +219,24 @@ compound_statement:
|
|||||||
$return .= "Do nothing.\n";
|
$return .= "Do nothing.\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$return .= "End block.\n" if not $arg{context};
|
if ($arg{context} =~ /block item/
|
||||||
|
and $arg{context} !~ /do loop$/
|
||||||
|
and $arg{context} !~ /if statement$/
|
||||||
|
and $arg{context} !~ /switch$/
|
||||||
|
and $arg{context} !~ /else block$/) {
|
||||||
|
$return .= "End block.\n";
|
||||||
|
}
|
||||||
|
|
||||||
if ($arg{context}
|
if ($arg{context}
|
||||||
and $arg{context} !~ /do loop/
|
and $arg{context} !~ /do loop$/
|
||||||
and $arg{context} !~ /if statement/
|
and $arg{context} !~ /if statement$/
|
||||||
and $arg{context} !~ /else block/
|
and $arg{context} !~ /else block$/
|
||||||
and $arg{context} !~ /case/
|
and $arg{context} !~ /case$/
|
||||||
and $arg{context} !~ /function definition statement/
|
and $arg{context} !~ /function definition statement$/
|
||||||
and $arg{context} !~ /function definition/) {
|
and $arg{context} !~ /function definition$/) {
|
||||||
$return .= "End $arg{context}.\n";
|
my @contexts = split /\|/, $arg{context};
|
||||||
|
my $context = pop @contexts;
|
||||||
|
$return .= "End $context.\n" unless $context eq 'block item';
|
||||||
}
|
}
|
||||||
1;
|
1;
|
||||||
}
|
}
|
||||||
@ -347,9 +361,9 @@ selection_statement:
|
|||||||
{ $return = "Otherwise, ^L$item{statement}"; }
|
{ $return = "Otherwise, ^L$item{statement}"; }
|
||||||
)(?)
|
)(?)
|
||||||
{ $return .= join('',@{$item[-1]}); }
|
{ $return .= join('',@{$item[-1]}); }
|
||||||
| 'switch' '(' expression[context => 'switch conditional'] ')' statement[context => 'switch']
|
| 'switch' '(' expression[context => 'switch conditional'] ')' statement[context => "$arg{context}|switch"]
|
||||||
{
|
{
|
||||||
$return = "When given the expression \'^L$item{expression}\', ^L$item{statement}";
|
$return = "When given the expression ^L$item{expression}, ^L$item{statement}";
|
||||||
}
|
}
|
||||||
|
|
||||||
jump_statement:
|
jump_statement:
|
||||||
@ -415,7 +429,7 @@ labeled_statement:
|
|||||||
$return = join(', ', @items) . " or $last";
|
$return = join(', ', @items) . " or $last";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(statement[context => 'case'])(s)
|
(statement[context => "$arg{context}|case"])(s)
|
||||||
{
|
{
|
||||||
my $last = pop @{$item[-1]};
|
my $last = pop @{$item[-1]};
|
||||||
my $statements = join('', @{$item[-1]});
|
my $statements = join('', @{$item[-1]});
|
||||||
@ -469,7 +483,7 @@ conditional_expression:
|
|||||||
my $op2 = $item{conditional_ternary_expression}->[1];
|
my $op2 = $item{conditional_ternary_expression}->[1];
|
||||||
my $expression = ::istrue $item{logical_OR_AND_expression};
|
my $expression = ::istrue $item{logical_OR_AND_expression};
|
||||||
|
|
||||||
if ($arg{context} =~ /statement$/) {
|
if ($arg{context} =~ /initializer expression$/) {
|
||||||
$return = "$op1 if $expression otherwise to $op2";
|
$return = "$op1 if $expression otherwise to $op2";
|
||||||
} elsif ($arg{context} =~ /assignment expression$/) {
|
} elsif ($arg{context} =~ /assignment expression$/) {
|
||||||
$return = "$op1 if $expression otherwise the value $op2";
|
$return = "$op1 if $expression otherwise the value $op2";
|
||||||
@ -1771,7 +1785,7 @@ enumerator:
|
|||||||
{
|
{
|
||||||
$return = $item[1];
|
$return = $item[1];
|
||||||
if (@{$item[-1]}) {
|
if (@{$item[-1]}) {
|
||||||
$return .= ' marking ' . join('', @{$item[-1]});
|
$return .= ' marking ^L' . join('', @{$item[-1]});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user