конструкция is literal
This commit is contained in:
parent
bd78e1a969
commit
3ada32a1f3
|
|
@ -1,9 +1,9 @@
|
|||
//
|
||||
// This CSharp output file generated by Gardens Point LEX
|
||||
// Version: 1.1.3.301
|
||||
// Machine: DESKTOP-G8V08V4
|
||||
// DateTime: 26.12.2018 21:06:31
|
||||
// UserName: ?????????
|
||||
// Machine: DESKTOP-IF20NRO
|
||||
// DateTime: 1/11/2019 9:57:02 AM
|
||||
// UserName: FatCow
|
||||
// GPLEX input file <ABCPascal.lex>
|
||||
// GPLEX frame file <embedded resource>
|
||||
//
|
||||
|
|
|
|||
|
|
@ -3492,6 +3492,10 @@ is_expr
|
|||
{
|
||||
$$ = NewAsIsExpr($1, op_typecast.is_op, $3, @$);
|
||||
}
|
||||
| term tkIs literal_or_number
|
||||
{
|
||||
$$ = NewIsObjectExpr($1, $3, @$);
|
||||
}
|
||||
;
|
||||
|
||||
simple_term
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -321,6 +321,29 @@ namespace GPPGParserScanner
|
|||
return naie;
|
||||
}
|
||||
|
||||
public method_call NewIsObjectExpr(syntax_tree_node left_term, syntax_tree_node right_term, LexLocation loc)
|
||||
{
|
||||
var eq_params = new expression_list(
|
||||
new List<expression>()
|
||||
{
|
||||
(addressed_value)left_term,
|
||||
(addressed_value)right_term
|
||||
}
|
||||
);
|
||||
var equals_call_node = new method_call(
|
||||
new dot_node(new ident("object"), new ident("Equals")),
|
||||
eq_params,
|
||||
loc);
|
||||
|
||||
if (!(left_term is addressed_value))
|
||||
parsertools.errors.Add(new bad_operand_type(parsertools.CurrentFileName, left_term.source_context, equals_call_node));
|
||||
|
||||
if (!(right_term is addressed_value))
|
||||
parsertools.errors.Add(new bad_operand_type(parsertools.CurrentFileName, right_term.source_context, equals_call_node));
|
||||
|
||||
return equals_call_node;
|
||||
}
|
||||
|
||||
public function_lambda_call NewFactor(ident func_decl_lambda, expression_list expr_list, LexLocation loc)
|
||||
{
|
||||
var fld = parsertools.find_pascalABC_lambda_name(func_decl_lambda.name);
|
||||
|
|
|
|||
Loading…
Reference in a new issue