Skip to content

Language Spec Outline

Chris B edited this page Sep 18, 2024 · 2 revisions

Language Spec Outline

This document is an outline for the HLSL language specification being written over here. This page only exists to facilitate organizing the effort to write the spec and help people contributing to the spec have a full idea of the scope and organization. The spec itself is built after each change and the latest built artifacts can be found on the GitHub.IO page in HTML and PDF.

Introduction - In Progress

The introduction describes the scope of the document and provides background context including references, definitions of terms, and the basis of the program execution and memory models.

Lexical Conventions - In Progress

This chapter should fully describe the basic lexical constructs that form a program. And the fundamental basis for how a compiler processes source files.

Missing sections:

  • Identifiers
  • Keywords
  • Operators and punctuators

Basic Concepts - In Progress

This chapter defines basic terms and mechanisms that the language builds from. These concepts should cover foundational concepts like the definitions, names, variables and scope.

This section will also include a definition of the memory and execution models for the language.

Missing sections:

  • Scope
  • Name Lookup
  • Memory and object model
  • Execution Model

Standard Conversions - Mostly Complete

This chapter describes the standard set of conversions for how an object is converted from one type to another.

Expressions - In Progress

  • Primary Expressions - In Progress
  • Postfix Expressions - In Progress
  • Unary Expressions
  • Explicit Type Conversion
  • Arithmetic and Logical Operators
    • Addition and Subtraction Operators
    • Multiplication and Division Operators
    • Shift Operators
    • Equality and Relational Operators
    • Bitwise Operators
  • Conditional Operator
  • Assignment and Compound Assignment
  • Comma Operator
  • Constant Expressions

Statements - In Progress

  • Labeled Statements - Needs Revisiting
  • Expression Statement
  • Compound Statement
  • Selection Statement
  • Iteration Statement
  • Declaration Statement
  • Statement Attributes - In Progress

C++ Spec has a section [stmt.ambig] which we need to review as well.

Declarations - In Progress

Classes

Overloading - In Progress

Templates

Preprocessor

Library Introduction

Math Library

Thread Cooperative Library

Atomic Library

Resource Library