4 using System.Collections.Generic;
8 using SiliconStudio.Paradox.Shaders.Parser.Ast;
9 using SiliconStudio.Shaders.Ast;
10 using SiliconStudio.Shaders.Ast.Hlsl;
11 using SiliconStudio.Shaders.Utility;
21 var value = Ast<ShaderClassType>(node);
24 value.BaseClasses.AddRange((List<ShaderTypeName>)node.
ChildNodes[2].AstNode);
25 FillListFromNodes(node.
ChildNodes[4].ChildNodes, value.Members);
32 if (genericIdentifier != null)
34 foreach (var genericIdentifierItem
in genericIdentifier.Generics)
36 dest.ShaderGenerics.Add(genericIdentifierItem);
38 input =
new Identifier(input.
Text) { Span = genericIdentifier.Span };
53 var value = Ast<ClassIdentifierGeneric>(node);
54 value.IsSpecialReference =
true;
55 value.Text = identifier.Text;
56 value.Generics.AddRange((List<Variable>)node.
ChildNodes[2].AstNode);
60 node.AstNode = identifier;
66 var qualifier = AstCompositeEnum<Qualifier>(node);
70 qualifier = ParadoxStorageQualifier.Parse(node.ChildNodes[0].Token.Text);
71 qualifier.Span = SpanConverter.Convert(node.Span);
75 node.AstNode = qualifier;
80 Ast<SemanticType>(node);
95 var value = Ast<ForEachStatement>(node);
102 value.Body = (
Statement)node.ChildNodes[7].AstNode;
107 base.CreateIdentifierSubGenericAst(context, node);
120 var value = Ast<Variable>(node);
127 value.Type = (
TypeBase)node.ChildNodes[0].AstNode;
142 var value = Ast<ShaderTypeName>(node);
151 node.AstNode = node.ChildNodes[0].ChildNodes[0].AstNode;
153 node.AstNode =
new List<ShaderTypeName>();
158 var value = Ast<ParametersBlock>(node);
169 var value = Ast<ShaderBlock>(node);
174 value.IsPartial = node.ChildNodes[1].ChildNodes.Count == 1;
181 var value = Ast<MixinStatement>(node);
190 value.Value = (node.ChildNodes[1].AstNode as
Expression);
191 if (value.Value == null)
193 var typeName = node.ChildNodes[1].Term.Name;
195 Enum.TryParse(typeName,
true, out type);
207 var value = Ast<UsingStatement>(node);
216 var value = Ast<UsingParametersStatement>(node);
230 var value = Ast<EnumType>(node);
233 value.Attributes = (List<AttributeBase>)node.
ChildNodes[0].AstNode;
234 value.Name = (
Identifier)node.ChildNodes[2].AstNode;
235 value.Values.AddRange((List<Expression>)node.
ChildNodes[4].AstNode);
245 var value = Ast<VariableReferenceExpression>(node);
250 var value = Ast<AssignmentExpression>(node);
252 value.Operator = AssignmentOperator.Default;
259 var value = Ast<ForEachStatement>(node);
263 value.Body = (
Statement)node.ChildNodes[5].AstNode;
268 var value = Ast<NamespaceBlock>(node);
272 value.Body = (List<Node>)node.ChildNodes[2].AstNode;
279 node.AstNode = (List<Node>)node.
ChildNodes[1].AstNode;
string Text
Gets or sets the name.
void CreateClassIdentifierSubGenericAst(ParsingContext context, ParseTreeNode node)
static void CreateShaderClassBaseTypeAst(ParsingContext context, ParseTreeNode node)
override void CreateIdentifierSubGenericAst(ParsingContext context, ParseTreeNode node)
Base root class for all statements.
ParseTreeNodeList ChildNodes
static void ParseClassGenerics(Identifier input, ShaderClassType dest)
A reference to a variable.
MixinStatementType
Type of a mixin.
override void CreateStorageQualifier(ParsingContext context, ParseTreeNode node)
The create storage qualifier.