mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 10:42:45 +00:00 
			
		
		
		
	 75fd28014c
			
		
	
	
		75fd28014c
		
	
	
	
	
		
			
			This will effectively allow us to use C++ code as an input for the compiler. This would be useful for testing, since otherwise we would have had to specify tests as a spec-like XML, which is not exactly the most developer-friendly experience.
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			713 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			713 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2023, Dan Klishch <danilklishch@gmail.com>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <LibCpp/AST.h>
 | |
| 
 | |
| #include "Forward.h"
 | |
| 
 | |
| namespace JSSpecCompiler {
 | |
| 
 | |
| class CppASTConverter {
 | |
| public:
 | |
|     CppASTConverter(RefPtr<Cpp::FunctionDeclaration> const& function)
 | |
|         : m_function(function)
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     NonnullRefPtr<FunctionDefinition> convert();
 | |
| 
 | |
| private:
 | |
|     template<typename T>
 | |
|     NullableTree convert_node(T const&);
 | |
|     NullableTree as_nullable_tree(Cpp::Statement const* statement);
 | |
|     Tree as_tree(Cpp::Statement const* statement);
 | |
|     Tree as_possibly_empty_tree(Cpp::Statement const* statement);
 | |
| 
 | |
|     RefPtr<Cpp::FunctionDeclaration> m_function;
 | |
| };
 | |
| 
 | |
| }
 |