mirror of https://github.com/t1meshift/js.git
				
				
				
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
"""The module of AST nodes for declarations."""
 | 
						|
 | 
						|
from typing import List
 | 
						|
 | 
						|
from . import *
 | 
						|
from .identifiers import Identifier
 | 
						|
from .patterns import Pattern
 | 
						|
from .statements import Statement, FunctionBody
 | 
						|
from .functions import Function
 | 
						|
 | 
						|
 | 
						|
class Declaration(Statement):
 | 
						|
    """Any declaration node. Note that declarations are considered statements; this is because declarations can
 | 
						|
    appear in any statement context. """
 | 
						|
 | 
						|
    def __init__(self, node_type: str, loc: Optional[SourceLocation]):
 | 
						|
        super().__init__(node_type, loc)
 | 
						|
 | 
						|
 | 
						|
class FunctionDeclaration(Function, Declaration):
 | 
						|
    """A function declaration. Note that unlike in the parent interface `Function`, the `id` cannot be `None`."""
 | 
						|
 | 
						|
    def __init__(
 | 
						|
        self,
 | 
						|
        loc: Optional[SourceLocation],
 | 
						|
        function_id: Identifier,
 | 
						|
        params: List[Pattern],
 | 
						|
        body: FunctionBody,
 | 
						|
    ):
 | 
						|
        super().__init__("FunctionDeclaration", loc, function_id, params, body)
 | 
						|
 | 
						|
 | 
						|
class VariableDeclarator(Node):
 | 
						|
    """A variable declarator."""
 | 
						|
 | 
						|
    def __init__(
 | 
						|
        self, loc: Optional[SourceLocation], var_id: Pattern, init: Optional[Exception]
 | 
						|
    ):
 | 
						|
        super().__init__("VariableDeclarator", loc)
 | 
						|
        self.id = var_id
 | 
						|
        self.init = init
 | 
						|
 | 
						|
 | 
						|
class VariableDeclaration(Declaration):
 | 
						|
    """A variable declaration."""
 | 
						|
 | 
						|
    def __init__(
 | 
						|
        self, loc: Optional[SourceLocation], declarations: List[VariableDeclarator]
 | 
						|
    ):
 | 
						|
        super().__init__("VariableDeclaration", loc)
 | 
						|
        self.declarations = declarations
 | 
						|
        self.kind = "var"
 |