This commit is contained in:
Mikhalkovich Stanislav 2019-06-28 11:26:08 +03:00
commit 62c1c61bc0
6 changed files with 26 additions and 11 deletions

View file

@ -1,9 +1,9 @@
//
// This CSharp output file generated by Gardens Point LEX
// Version: 1.1.3.301
// Machine: DESKTOP-G8V08V4
// DateTime: 24.06.2019 15:32:41
// UserName: ?????????
// Machine: DESKTOP-IF20NRO
// DateTime: 6/28/2019 7:30:18 AM
// UserName: FatCow
// GPLEX input file <ABCPascal.lex>
// GPLEX frame file <embedded resource>
//

View file

@ -1,9 +1,9 @@
// (see accompanying GPPGcopyright.rtf)
// GPPG version 1.3.6
// Machine: DESKTOP-G8V08V4
// DateTime: 24.06.2019 15:32:41
// UserName: ?????????
// Machine: DESKTOP-IF20NRO
// DateTime: 6/28/2019 7:30:19 AM
// UserName: FatCow
// Input file <ABCPascal.y>
// options: no-lines gplex

View file

@ -19,21 +19,21 @@ namespace SyntaxVisitors.SugarVisitors
if_node leftExprIfNode = null;
if (binEpxr.operation_type == Operators.LogicalAND)
{
rightExprIfNode = new if_node(binEpxr.right, _if_node.then_body, _if_node.else_body, _if_node.source_context);
leftExprIfNode = new if_node(binEpxr.left, rightExprIfNode, _if_node.else_body, _if_node.source_context);
rightExprIfNode = new if_node(binEpxr.right, (statement)_if_node.then_body?.Clone(), (statement)_if_node.else_body?.Clone(), _if_node.source_context);
leftExprIfNode = new if_node(binEpxr.left, rightExprIfNode, (statement)_if_node.else_body?.Clone(), _if_node.source_context);
}
else if (binEpxr.operation_type == Operators.LogicalOR)
{
rightExprIfNode = new if_node(
new un_expr(binEpxr.right, Operators.LogicalNOT, binEpxr.source_context),
_if_node.else_body,
_if_node.then_body,
(statement)_if_node.else_body?.Clone(),
(statement)_if_node.then_body?.Clone(),
_if_node.source_context);
leftExprIfNode = new if_node(
new un_expr(binEpxr.left, Operators.LogicalNOT, binEpxr.source_context),
rightExprIfNode,
_if_node.then_body,
(statement)_if_node.then_body?.Clone(),
_if_node.source_context);
}
ReplaceUsingParent(_if_node, leftExprIfNode);

View file

@ -0,0 +1,7 @@
begin
var o1, o2, o3: object;
if (o1 is word(var p1)) and (o2 is real(var p2))
then
else
if (o3 is byte(var v1)) then
end.

View file

@ -9843,6 +9843,14 @@ namespace PascalABCCompiler.TreeConverter
dot_node_as_ident_dot_template_ident(id_left, _dot_node.right as ident_with_templateparams, mot);
return;
}
if (id_left.name != null && id_left.name.IndexOf('.') != -1)
{
var arr = id_left.name.Split('.');
var dotNodeToVisit = new dot_node(new ident(id_left.name.Substring(0, id_left.name.LastIndexOf('.')), id_left.source_context), new ident(arr[arr.Length-1],id_left.source_context));
visit(new dot_node(dotNodeToVisit, id_right, _dot_node.source_context));
return;
}
if (id_left is inherited_ident)
inherited_ident_processing = true;
dot_node_as_ident_dot_ident(id_left, id_right, mot);