summaryrefslogtreecommitdiffstats
path: root/third_party/rust/naga/src/front/glsl/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/naga/src/front/glsl/mod.rs')
-rw-r--r--third_party/rust/naga/src/front/glsl/mod.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/third_party/rust/naga/src/front/glsl/mod.rs b/third_party/rust/naga/src/front/glsl/mod.rs
new file mode 100644
index 0000000000..4661011828
--- /dev/null
+++ b/third_party/rust/naga/src/front/glsl/mod.rs
@@ -0,0 +1,43 @@
+use crate::{FastHashMap, Module, ShaderStage};
+
+mod lex;
+#[cfg(test)]
+mod lex_tests;
+
+mod preprocess;
+#[cfg(test)]
+mod preprocess_tests;
+
+mod ast;
+use ast::Program;
+
+use lex::Lexer;
+mod error;
+use error::ParseError;
+mod parser;
+#[cfg(test)]
+mod parser_tests;
+mod token;
+mod types;
+mod variables;
+
+pub fn parse_str(
+ source: &str,
+ entry: &str,
+ stage: ShaderStage,
+ defines: FastHashMap<String, String>,
+) -> Result<Module, ParseError> {
+ let mut program = Program::new(stage, entry);
+
+ let mut lex = Lexer::new(source);
+ lex.pp.defines = defines;
+
+ let mut parser = parser::Parser::new(&mut program);
+
+ for token in lex {
+ parser.parse(token)?;
+ }
+ parser.end_of_input()?;
+
+ Ok(program.module)
+}