mirror of
https://github.com/RGBCube/serenity
synced 2025-05-15 03:34:59 +00:00

It simplifies ladders of BinaryOperators nodes in the function call arguments into nice and neat FunctionCall node. Ladders initially appear since I do not want to complicate expression parser, so it interprets `f(a, b, c, d)` as `f "function_call_operator" (a, (b, (c, d))))`.
26 lines
701 B
C++
26 lines
701 B
C++
/*
|
|
* Copyright (c) 2023, Dan Klishch <danilklishch@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "Compiler/GenericASTPass.h"
|
|
|
|
namespace JSSpecCompiler {
|
|
|
|
// FunctionCallCanonicalizationPass simplifies ladders of BinaryOperators nodes in the function call
|
|
// arguments into nice and neat FunctionCall nodes.
|
|
//
|
|
// Ladders initially appear since I do not want to complicate expression parser, so it interprets
|
|
// `f(a, b, c, d)` as `f "function_call_operator" (a, (b, (c, d))))`.
|
|
class FunctionCallCanonicalizationPass : public GenericASTPass {
|
|
public:
|
|
using GenericASTPass::GenericASTPass;
|
|
|
|
protected:
|
|
RecursionDecision on_entry(Tree tree) override;
|
|
};
|
|
|
|
}
|