diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp
new file mode 100755
index 0000000..9673658
--- /dev/null
+++ b/hlsl/hlslGrammar.cpp
@@ -0,0 +1,93 @@
+//
+//Copyright (C) 2016 Google, Inc.
+//
+//All rights reserved.
+//
+//Redistribution and use in source and binary forms, with or without
+//modification, are permitted provided that the following conditions
+//are met:
+//
+//    Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+//
+//    Redistributions in binary form must reproduce the above
+//    copyright notice, this list of conditions and the following
+//    disclaimer in the documentation and/or other materials provided
+//    with the distribution.
+//
+//    Neither the name of Google, Inc., nor the names of its
+//    contributors may be used to endorse or promote products derived
+//    from this software without specific prior written permission.
+//
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+//POSSIBILITY OF SUCH DAMAGE.
+//
+
+#include "hlslTokens.h"
+#include "hlslGrammar.h"
+
+namespace glslang {
+
+// Root entry point to this recursive decent parser.
+// Return true if compilation unit was successfully accepted.
+bool HlslGrammar::parse()
+{
+    advanceToken();
+    return acceptCompilationUnit();
+}
+
+void HlslGrammar::expected(const char* syntax)
+{
+    parseContext.error(token.loc, "Expected", syntax, "");
+}
+
+// Load 'token' with the next token in the stream of tokens.
+void HlslGrammar::advanceToken()
+{
+    scanContext.tokenize(token);
+}
+
+// Return true and advance to the next token if the current token is the
+// expected (passed in) token class.
+bool HlslGrammar::acceptTokenClass(EHlslTokenClass tokenClass)
+{
+    if (token.tokenClass == tokenClass) {
+        advanceToken();
+        return true;
+    }
+
+    return false;
+}
+
+// compilationUnit
+//      : list of externalDeclaration
+//
+bool HlslGrammar::acceptCompilationUnit()
+{
+    while (token.tokenClass != EHTokNone) {
+        if (! acceptDeclaration())
+            return false;
+    }
+
+    return true;
+}
+
+// declaration
+//      : dummy stub
+bool HlslGrammar::acceptDeclaration()
+{
+    advanceToken();
+    return true;
+}
+
+} // end namespace glslang
