Skip to content
This repository has been archived by the owner on May 2, 2018. It is now read-only.

tgjones/hlsl-parser-nitra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HlslParser

HlslParser is a SM5.0 HLSL parser for .NET. The grammar and parser are built using JetBrains' Nitra project. Currently, it only parses HLSL code into an AST. Once Nitra adds support for it (planned for a future milestone), I plan to extend HlslParser to support full HLSL intellisense in Visual Studio.

HlslParser is currently capable of parsing most / all of the sample shaders in the Direct3D SDK, as well as several other shaders - see the test suite.

(On a nerd note, Nitra makes it possible to define the grammar in a nice concise way; so far, I prefer it to other parser generators that I've used. Here is the HLSL grammar file.)

Usage

var sourceSnapshot = new SourceSnapshot(sourceCode);
var parserHost = new ParserHost();
var compilationUnit = HlslGrammar.CompilationUnit(sourceSnapshot, parserHost);

Assert.That(compilationUnit.IsSuccess, Is.True);

var parseTree = compilationUnit.CreateParseTree();
var parsedCode = parseTree.ToString();

Prerequisites

Because HlslParser is based on Nitra, you'll need to install the following before you can build HlslParser on your own machine:

  1. Nemerle
  2. Nitra

I haven't built an HLSL preprocessor. Instead, I make use of the Direct3D HLSL preprocessor, through SharpDX. SharpDX requires a specific DirectX runtime, so if you want to run the HlslParser test suite, you'll need to install that too:

License

HlslParser is released under the MIT License.