Beginnings of the SkSL DSL framework

The code at this point doesn't do anything useful, but establishes some
of the basic types and patterns.

Change-Id: I580a9e75ffa3162879893450fb7d1f0905a10687
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/350697
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Auto-Submit: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/SkSLCompiler.h b/src/sksl/SkSLCompiler.h
index 2b46b52..123088b 100644
--- a/src/sksl/SkSLCompiler.h
+++ b/src/sksl/SkSLCompiler.h
@@ -45,6 +45,10 @@
 
 namespace SkSL {
 
+namespace dsl {
+    class DSLWriter;
+}
+
 class ByteCode;
 class ExternalFunction;
 class IRGenerator;
@@ -178,7 +182,7 @@
 
     void error(int offset, String msg) override;
 
-    String errorText();
+    String errorText(bool showCount = true);
 
     void writeErrorCount();
 
@@ -305,6 +309,7 @@
 
     friend class AutoSource;
     friend class ::SkSLCompileBench;
+    friend class dsl::DSLWriter;
 };
 
 #if !defined(SKSL_STANDALONE) && SK_SUPPORT_GPU