mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 19:41:07 +01:00
Define a base class for all AST nodes. (#947)
Also implement code-generation to manage the resulting boilerplate.
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
||||
# Exceptions. See /LICENSE for license information.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
root class AstNode;
|
||||
interface class NamedEntity : AstNode;
|
||||
abstract class Pattern : AstNode;
|
||||
class AutoPattern : Pattern;
|
||||
class BindingPattern : Pattern, NamedEntity;
|
||||
class TuplePattern : Pattern;
|
||||
class AlternativePattern : Pattern;
|
||||
class ExpressionPattern : Pattern;
|
||||
abstract class Declaration : AstNode, NamedEntity;
|
||||
class FunctionDeclaration : Declaration;
|
||||
class ClassDeclaration : Declaration;
|
||||
class ChoiceDeclaration : Declaration;
|
||||
class VariableDeclaration : Declaration;
|
||||
class GenericBinding : AstNode, NamedEntity;
|
||||
class AlternativeSignature : AstNode, NamedEntity;
|
||||
abstract class Statement : AstNode;
|
||||
class ExpressionStatement : Statement;
|
||||
class Assign : Statement;
|
||||
class VariableDefinition : Statement;
|
||||
class If : Statement;
|
||||
class Return : Statement;
|
||||
class Block : Statement;
|
||||
class While : Statement;
|
||||
class Break : Statement;
|
||||
class Continue : Statement;
|
||||
class Match : Statement;
|
||||
class Continuation : Statement, NamedEntity;
|
||||
class Run : Statement;
|
||||
class Await : Statement;
|
||||
abstract class Expression : AstNode;
|
||||
class BoolTypeLiteral : Expression;
|
||||
class BoolLiteral : Expression;
|
||||
class CallExpression : Expression;
|
||||
class FunctionTypeLiteral : Expression;
|
||||
class FieldAccessExpression : Expression;
|
||||
class IndexExpression : Expression;
|
||||
class IntTypeLiteral : Expression;
|
||||
class ContinuationTypeLiteral : Expression;
|
||||
class IntLiteral : Expression;
|
||||
class PrimitiveOperatorExpression : Expression;
|
||||
class StringLiteral : Expression;
|
||||
class StringTypeLiteral : Expression;
|
||||
class TupleLiteral : Expression;
|
||||
class StructLiteral : Expression;
|
||||
class StructTypeLiteral : Expression;
|
||||
class TypeTypeLiteral : Expression;
|
||||
class IdentifierExpression : Expression;
|
||||
class IntrinsicExpression : Expression;
|
||||
abstract class Member : AstNode;
|
||||
class FieldMember : Member, NamedEntity;
|
||||
Reference in New Issue
Block a user