3978 lines
186 KiB
C#
3978 lines
186 KiB
C#
// Generated by TinyPG v1.3 available at www.codeproject.com
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
// Disable unused variable warnings which
|
|
// can happen during the parser generation.
|
|
#pragma warning disable 168
|
|
|
|
namespace TwoMGFX.TPGParser
|
|
{
|
|
#region Parser
|
|
|
|
public partial class Parser
|
|
{
|
|
private Scanner scanner;
|
|
private ParseTree tree;
|
|
|
|
public Parser(Scanner scanner)
|
|
{
|
|
this.scanner = scanner;
|
|
}
|
|
|
|
public ParseTree Parse(string input)
|
|
{
|
|
return Parse(input, "", new ParseTree());
|
|
}
|
|
|
|
public ParseTree Parse(string input, string fileName)
|
|
{
|
|
return Parse(input, fileName, new ParseTree());
|
|
}
|
|
|
|
public ParseTree Parse(string input, string fileName, ParseTree tree)
|
|
{
|
|
scanner.Init(input, fileName);
|
|
|
|
this.tree = tree;
|
|
ParseStart(tree);
|
|
tree.Skipped = scanner.Skipped;
|
|
|
|
return tree;
|
|
}
|
|
|
|
private void ParseStart(ParseNode parent) // NonTerminalSymbol: Start
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Start), "Start");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Code, TokenType.Technique, TokenType.Sampler); // ZeroOrMore Rule
|
|
while (tok.Type == TokenType.Code
|
|
|| tok.Type == TokenType.Technique
|
|
|| tok.Type == TokenType.Sampler)
|
|
{
|
|
tok = scanner.LookAhead(TokenType.Code, TokenType.Technique, TokenType.Sampler); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Code:
|
|
tok = scanner.Scan(TokenType.Code); // Terminal Rule: Code
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Code) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Code.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
break;
|
|
case TokenType.Technique:
|
|
ParseTechnique_Declaration(node); // NonTerminal Rule: Technique_Declaration
|
|
break;
|
|
case TokenType.Sampler:
|
|
ParseSampler_Declaration(node); // NonTerminal Rule: Sampler_Declaration
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Code, Technique, or Sampler.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
tok = scanner.LookAhead(TokenType.Code, TokenType.Technique, TokenType.Sampler); // ZeroOrMore Rule
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.EndOfFile); // Terminal Rule: EndOfFile
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.EndOfFile) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.EndOfFile.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Start
|
|
|
|
private void ParseTechnique_Declaration(ParseNode parent) // NonTerminalSymbol: Technique_Declaration
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Technique_Declaration), "Technique_Declaration");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Technique); // Terminal Rule: Technique
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Technique) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Technique.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Identifier); // Option Rule
|
|
if (tok.Type == TokenType.Identifier)
|
|
{
|
|
tok = scanner.Scan(TokenType.Identifier); // Terminal Rule: Identifier
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Identifier) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Identifier.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.OpenBracket); // Terminal Rule: OpenBracket
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.OpenBracket) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.OpenBracket.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
do { // OneOrMore Rule
|
|
ParsePass_Declaration(node); // NonTerminal Rule: Pass_Declaration
|
|
tok = scanner.LookAhead(TokenType.Pass); // OneOrMore Rule
|
|
} while (tok.Type == TokenType.Pass); // OneOrMore Rule
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.CloseBracket); // Terminal Rule: CloseBracket
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CloseBracket) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CloseBracket.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Technique_Declaration
|
|
|
|
private void ParseFillMode_Solid(ParseNode parent) // NonTerminalSymbol: FillMode_Solid
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.FillMode_Solid), "FillMode_Solid");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Solid); // Terminal Rule: Solid
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Solid) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Solid.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: FillMode_Solid
|
|
|
|
private void ParseFillMode_WireFrame(ParseNode parent) // NonTerminalSymbol: FillMode_WireFrame
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.FillMode_WireFrame), "FillMode_WireFrame");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.WireFrame); // Terminal Rule: WireFrame
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.WireFrame) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.WireFrame.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: FillMode_WireFrame
|
|
|
|
private void ParseFillModes(ParseNode parent) // NonTerminalSymbol: FillModes
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.FillModes), "FillModes");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.Solid, TokenType.WireFrame); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Solid:
|
|
ParseFillMode_Solid(node); // NonTerminal Rule: FillMode_Solid
|
|
break;
|
|
case TokenType.WireFrame:
|
|
ParseFillMode_WireFrame(node); // NonTerminal Rule: FillMode_WireFrame
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Solid or WireFrame.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: FillModes
|
|
|
|
private void ParseCullMode_None(ParseNode parent) // NonTerminalSymbol: CullMode_None
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CullMode_None), "CullMode_None");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.None); // Terminal Rule: None
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.None) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.None.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CullMode_None
|
|
|
|
private void ParseCullMode_Cw(ParseNode parent) // NonTerminalSymbol: CullMode_Cw
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CullMode_Cw), "CullMode_Cw");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Cw); // Terminal Rule: Cw
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Cw) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Cw.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CullMode_Cw
|
|
|
|
private void ParseCullMode_Ccw(ParseNode parent) // NonTerminalSymbol: CullMode_Ccw
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CullMode_Ccw), "CullMode_Ccw");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Ccw); // Terminal Rule: Ccw
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Ccw) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Ccw.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CullMode_Ccw
|
|
|
|
private void ParseCullModes(ParseNode parent) // NonTerminalSymbol: CullModes
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CullModes), "CullModes");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.None, TokenType.Cw, TokenType.Ccw); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.None:
|
|
ParseCullMode_None(node); // NonTerminal Rule: CullMode_None
|
|
break;
|
|
case TokenType.Cw:
|
|
ParseCullMode_Cw(node); // NonTerminal Rule: CullMode_Cw
|
|
break;
|
|
case TokenType.Ccw:
|
|
ParseCullMode_Ccw(node); // NonTerminal Rule: CullMode_Ccw
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected None, Cw, or Ccw.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CullModes
|
|
|
|
private void ParseColors_None(ParseNode parent) // NonTerminalSymbol: Colors_None
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Colors_None), "Colors_None");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.None); // Terminal Rule: None
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.None) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.None.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Colors_None
|
|
|
|
private void ParseColors_Red(ParseNode parent) // NonTerminalSymbol: Colors_Red
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Colors_Red), "Colors_Red");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Red); // Terminal Rule: Red
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Red) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Red.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Colors_Red
|
|
|
|
private void ParseColors_Green(ParseNode parent) // NonTerminalSymbol: Colors_Green
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Colors_Green), "Colors_Green");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Green); // Terminal Rule: Green
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Green) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Green.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Colors_Green
|
|
|
|
private void ParseColors_Blue(ParseNode parent) // NonTerminalSymbol: Colors_Blue
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Colors_Blue), "Colors_Blue");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Blue); // Terminal Rule: Blue
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Blue) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Blue.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Colors_Blue
|
|
|
|
private void ParseColors_Alpha(ParseNode parent) // NonTerminalSymbol: Colors_Alpha
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Colors_Alpha), "Colors_Alpha");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Alpha); // Terminal Rule: Alpha
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Alpha) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Alpha.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Colors_Alpha
|
|
|
|
private void ParseColors_All(ParseNode parent) // NonTerminalSymbol: Colors_All
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Colors_All), "Colors_All");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.All); // Terminal Rule: All
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.All) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.All.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Colors_All
|
|
|
|
private void ParseColors_Boolean(ParseNode parent) // NonTerminalSymbol: Colors_Boolean
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Colors_Boolean), "Colors_Boolean");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Boolean); // Terminal Rule: Boolean
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Boolean) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Boolean.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Colors_Boolean
|
|
|
|
private void ParseColors(ParseNode parent) // NonTerminalSymbol: Colors
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Colors), "Colors");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.Red, TokenType.Green, TokenType.Blue, TokenType.Alpha, TokenType.None, TokenType.All, TokenType.Boolean); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Red:
|
|
ParseColors_Red(node); // NonTerminal Rule: Colors_Red
|
|
break;
|
|
case TokenType.Green:
|
|
ParseColors_Green(node); // NonTerminal Rule: Colors_Green
|
|
break;
|
|
case TokenType.Blue:
|
|
ParseColors_Blue(node); // NonTerminal Rule: Colors_Blue
|
|
break;
|
|
case TokenType.Alpha:
|
|
ParseColors_Alpha(node); // NonTerminal Rule: Colors_Alpha
|
|
break;
|
|
case TokenType.None:
|
|
ParseColors_None(node); // NonTerminal Rule: Colors_None
|
|
break;
|
|
case TokenType.All:
|
|
ParseColors_All(node); // NonTerminal Rule: Colors_All
|
|
break;
|
|
case TokenType.Boolean:
|
|
ParseColors_Boolean(node); // NonTerminal Rule: Colors_Boolean
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Red, Green, Blue, Alpha, None, All, or Boolean.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Colors
|
|
|
|
private void ParseColorsMasks(ParseNode parent) // NonTerminalSymbol: ColorsMasks
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.ColorsMasks), "ColorsMasks");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
ParseColors(node); // NonTerminal Rule: Colors
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Or); // Option Rule
|
|
if (tok.Type == TokenType.Or)
|
|
{
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Or); // Terminal Rule: Or
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Or) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Or.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseColors(node); // NonTerminal Rule: Colors
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Or); // Option Rule
|
|
if (tok.Type == TokenType.Or)
|
|
{
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Or); // Terminal Rule: Or
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Or) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Or.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseColors(node); // NonTerminal Rule: Colors
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Or); // Option Rule
|
|
if (tok.Type == TokenType.Or)
|
|
{
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Or); // Terminal Rule: Or
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Or) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Or.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseColors(node); // NonTerminal Rule: Colors
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: ColorsMasks
|
|
|
|
private void ParseBlend_Zero(ParseNode parent) // NonTerminalSymbol: Blend_Zero
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_Zero), "Blend_Zero");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Zero); // Terminal Rule: Zero
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Zero) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Zero.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_Zero
|
|
|
|
private void ParseBlend_One(ParseNode parent) // NonTerminalSymbol: Blend_One
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_One), "Blend_One");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.One); // Terminal Rule: One
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.One) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.One.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_One
|
|
|
|
private void ParseBlend_SrcColor(ParseNode parent) // NonTerminalSymbol: Blend_SrcColor
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_SrcColor), "Blend_SrcColor");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.SrcColor); // Terminal Rule: SrcColor
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.SrcColor) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.SrcColor.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_SrcColor
|
|
|
|
private void ParseBlend_InvSrcColor(ParseNode parent) // NonTerminalSymbol: Blend_InvSrcColor
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_InvSrcColor), "Blend_InvSrcColor");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.InvSrcColor); // Terminal Rule: InvSrcColor
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.InvSrcColor) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.InvSrcColor.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_InvSrcColor
|
|
|
|
private void ParseBlend_SrcAlpha(ParseNode parent) // NonTerminalSymbol: Blend_SrcAlpha
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_SrcAlpha), "Blend_SrcAlpha");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.SrcAlpha); // Terminal Rule: SrcAlpha
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.SrcAlpha) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.SrcAlpha.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_SrcAlpha
|
|
|
|
private void ParseBlend_InvSrcAlpha(ParseNode parent) // NonTerminalSymbol: Blend_InvSrcAlpha
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_InvSrcAlpha), "Blend_InvSrcAlpha");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.InvSrcAlpha); // Terminal Rule: InvSrcAlpha
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.InvSrcAlpha) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.InvSrcAlpha.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_InvSrcAlpha
|
|
|
|
private void ParseBlend_DestAlpha(ParseNode parent) // NonTerminalSymbol: Blend_DestAlpha
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_DestAlpha), "Blend_DestAlpha");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.DestAlpha); // Terminal Rule: DestAlpha
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.DestAlpha) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.DestAlpha.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_DestAlpha
|
|
|
|
private void ParseBlend_InvDestAlpha(ParseNode parent) // NonTerminalSymbol: Blend_InvDestAlpha
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_InvDestAlpha), "Blend_InvDestAlpha");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.InvDestAlpha); // Terminal Rule: InvDestAlpha
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.InvDestAlpha) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.InvDestAlpha.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_InvDestAlpha
|
|
|
|
private void ParseBlend_DestColor(ParseNode parent) // NonTerminalSymbol: Blend_DestColor
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_DestColor), "Blend_DestColor");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.DestColor); // Terminal Rule: DestColor
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.DestColor) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.DestColor.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_DestColor
|
|
|
|
private void ParseBlend_InvDestColor(ParseNode parent) // NonTerminalSymbol: Blend_InvDestColor
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_InvDestColor), "Blend_InvDestColor");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.InvDestColor); // Terminal Rule: InvDestColor
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.InvDestColor) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.InvDestColor.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_InvDestColor
|
|
|
|
private void ParseBlend_SrcAlphaSat(ParseNode parent) // NonTerminalSymbol: Blend_SrcAlphaSat
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_SrcAlphaSat), "Blend_SrcAlphaSat");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.SrcAlphaSat); // Terminal Rule: SrcAlphaSat
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.SrcAlphaSat) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.SrcAlphaSat.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_SrcAlphaSat
|
|
|
|
private void ParseBlend_BlendFactor(ParseNode parent) // NonTerminalSymbol: Blend_BlendFactor
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_BlendFactor), "Blend_BlendFactor");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.BlendFactor); // Terminal Rule: BlendFactor
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.BlendFactor) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BlendFactor.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_BlendFactor
|
|
|
|
private void ParseBlend_InvBlendFactor(ParseNode parent) // NonTerminalSymbol: Blend_InvBlendFactor
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blend_InvBlendFactor), "Blend_InvBlendFactor");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.InvBlendFactor); // Terminal Rule: InvBlendFactor
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.InvBlendFactor) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.InvBlendFactor.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blend_InvBlendFactor
|
|
|
|
private void ParseBlends(ParseNode parent) // NonTerminalSymbol: Blends
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Blends), "Blends");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.Zero, TokenType.One, TokenType.SrcColor, TokenType.InvSrcColor, TokenType.SrcAlpha, TokenType.InvSrcAlpha, TokenType.DestAlpha, TokenType.InvDestAlpha, TokenType.DestColor, TokenType.InvDestColor, TokenType.SrcAlphaSat, TokenType.BlendFactor, TokenType.InvBlendFactor); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Zero:
|
|
ParseBlend_Zero(node); // NonTerminal Rule: Blend_Zero
|
|
break;
|
|
case TokenType.One:
|
|
ParseBlend_One(node); // NonTerminal Rule: Blend_One
|
|
break;
|
|
case TokenType.SrcColor:
|
|
ParseBlend_SrcColor(node); // NonTerminal Rule: Blend_SrcColor
|
|
break;
|
|
case TokenType.InvSrcColor:
|
|
ParseBlend_InvSrcColor(node); // NonTerminal Rule: Blend_InvSrcColor
|
|
break;
|
|
case TokenType.SrcAlpha:
|
|
ParseBlend_SrcAlpha(node); // NonTerminal Rule: Blend_SrcAlpha
|
|
break;
|
|
case TokenType.InvSrcAlpha:
|
|
ParseBlend_InvSrcAlpha(node); // NonTerminal Rule: Blend_InvSrcAlpha
|
|
break;
|
|
case TokenType.DestAlpha:
|
|
ParseBlend_DestAlpha(node); // NonTerminal Rule: Blend_DestAlpha
|
|
break;
|
|
case TokenType.InvDestAlpha:
|
|
ParseBlend_InvDestAlpha(node); // NonTerminal Rule: Blend_InvDestAlpha
|
|
break;
|
|
case TokenType.DestColor:
|
|
ParseBlend_DestColor(node); // NonTerminal Rule: Blend_DestColor
|
|
break;
|
|
case TokenType.InvDestColor:
|
|
ParseBlend_InvDestColor(node); // NonTerminal Rule: Blend_InvDestColor
|
|
break;
|
|
case TokenType.SrcAlphaSat:
|
|
ParseBlend_SrcAlphaSat(node); // NonTerminal Rule: Blend_SrcAlphaSat
|
|
break;
|
|
case TokenType.BlendFactor:
|
|
ParseBlend_BlendFactor(node); // NonTerminal Rule: Blend_BlendFactor
|
|
break;
|
|
case TokenType.InvBlendFactor:
|
|
ParseBlend_InvBlendFactor(node); // NonTerminal Rule: Blend_InvBlendFactor
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Zero, One, SrcColor, InvSrcColor, SrcAlpha, InvSrcAlpha, DestAlpha, InvDestAlpha, DestColor, InvDestColor, SrcAlphaSat, BlendFactor, or InvBlendFactor.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Blends
|
|
|
|
private void ParseBlendOp_Add(ParseNode parent) // NonTerminalSymbol: BlendOp_Add
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.BlendOp_Add), "BlendOp_Add");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Add); // Terminal Rule: Add
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Add) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Add.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: BlendOp_Add
|
|
|
|
private void ParseBlendOp_Subtract(ParseNode parent) // NonTerminalSymbol: BlendOp_Subtract
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.BlendOp_Subtract), "BlendOp_Subtract");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Subtract); // Terminal Rule: Subtract
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Subtract) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Subtract.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: BlendOp_Subtract
|
|
|
|
private void ParseBlendOp_RevSubtract(ParseNode parent) // NonTerminalSymbol: BlendOp_RevSubtract
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.BlendOp_RevSubtract), "BlendOp_RevSubtract");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.RevSubtract); // Terminal Rule: RevSubtract
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.RevSubtract) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.RevSubtract.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: BlendOp_RevSubtract
|
|
|
|
private void ParseBlendOp_Min(ParseNode parent) // NonTerminalSymbol: BlendOp_Min
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.BlendOp_Min), "BlendOp_Min");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Min); // Terminal Rule: Min
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Min) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Min.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: BlendOp_Min
|
|
|
|
private void ParseBlendOp_Max(ParseNode parent) // NonTerminalSymbol: BlendOp_Max
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.BlendOp_Max), "BlendOp_Max");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Max); // Terminal Rule: Max
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Max) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Max.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: BlendOp_Max
|
|
|
|
private void ParseBlendOps(ParseNode parent) // NonTerminalSymbol: BlendOps
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.BlendOps), "BlendOps");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.Add, TokenType.Subtract, TokenType.RevSubtract, TokenType.Min, TokenType.Max); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Add:
|
|
ParseBlendOp_Add(node); // NonTerminal Rule: BlendOp_Add
|
|
break;
|
|
case TokenType.Subtract:
|
|
ParseBlendOp_Subtract(node); // NonTerminal Rule: BlendOp_Subtract
|
|
break;
|
|
case TokenType.RevSubtract:
|
|
ParseBlendOp_RevSubtract(node); // NonTerminal Rule: BlendOp_RevSubtract
|
|
break;
|
|
case TokenType.Min:
|
|
ParseBlendOp_Min(node); // NonTerminal Rule: BlendOp_Min
|
|
break;
|
|
case TokenType.Max:
|
|
ParseBlendOp_Max(node); // NonTerminal Rule: BlendOp_Max
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Add, Subtract, RevSubtract, Min, or Max.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: BlendOps
|
|
|
|
private void ParseCmpFunc_Never(ParseNode parent) // NonTerminalSymbol: CmpFunc_Never
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CmpFunc_Never), "CmpFunc_Never");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Never); // Terminal Rule: Never
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Never) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Never.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CmpFunc_Never
|
|
|
|
private void ParseCmpFunc_Less(ParseNode parent) // NonTerminalSymbol: CmpFunc_Less
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CmpFunc_Less), "CmpFunc_Less");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Less); // Terminal Rule: Less
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Less) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Less.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CmpFunc_Less
|
|
|
|
private void ParseCmpFunc_Equal(ParseNode parent) // NonTerminalSymbol: CmpFunc_Equal
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CmpFunc_Equal), "CmpFunc_Equal");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Equal); // Terminal Rule: Equal
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equal) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equal.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CmpFunc_Equal
|
|
|
|
private void ParseCmpFunc_LessEqual(ParseNode parent) // NonTerminalSymbol: CmpFunc_LessEqual
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CmpFunc_LessEqual), "CmpFunc_LessEqual");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.LessEqual); // Terminal Rule: LessEqual
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.LessEqual) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.LessEqual.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CmpFunc_LessEqual
|
|
|
|
private void ParseCmpFunc_Greater(ParseNode parent) // NonTerminalSymbol: CmpFunc_Greater
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CmpFunc_Greater), "CmpFunc_Greater");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Greater); // Terminal Rule: Greater
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Greater) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Greater.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CmpFunc_Greater
|
|
|
|
private void ParseCmpFunc_NotEqual(ParseNode parent) // NonTerminalSymbol: CmpFunc_NotEqual
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CmpFunc_NotEqual), "CmpFunc_NotEqual");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.NotEqual); // Terminal Rule: NotEqual
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.NotEqual) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.NotEqual.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CmpFunc_NotEqual
|
|
|
|
private void ParseCmpFunc_GreaterEqual(ParseNode parent) // NonTerminalSymbol: CmpFunc_GreaterEqual
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CmpFunc_GreaterEqual), "CmpFunc_GreaterEqual");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.GreaterEqual); // Terminal Rule: GreaterEqual
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.GreaterEqual) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.GreaterEqual.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CmpFunc_GreaterEqual
|
|
|
|
private void ParseCmpFunc_Always(ParseNode parent) // NonTerminalSymbol: CmpFunc_Always
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CmpFunc_Always), "CmpFunc_Always");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Always); // Terminal Rule: Always
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Always) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Always.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CmpFunc_Always
|
|
|
|
private void ParseCmpFunc(ParseNode parent) // NonTerminalSymbol: CmpFunc
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CmpFunc), "CmpFunc");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.Never, TokenType.Less, TokenType.Equal, TokenType.LessEqual, TokenType.Greater, TokenType.NotEqual, TokenType.GreaterEqual, TokenType.Always); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Never:
|
|
ParseCmpFunc_Never(node); // NonTerminal Rule: CmpFunc_Never
|
|
break;
|
|
case TokenType.Less:
|
|
ParseCmpFunc_Less(node); // NonTerminal Rule: CmpFunc_Less
|
|
break;
|
|
case TokenType.Equal:
|
|
ParseCmpFunc_Equal(node); // NonTerminal Rule: CmpFunc_Equal
|
|
break;
|
|
case TokenType.LessEqual:
|
|
ParseCmpFunc_LessEqual(node); // NonTerminal Rule: CmpFunc_LessEqual
|
|
break;
|
|
case TokenType.Greater:
|
|
ParseCmpFunc_Greater(node); // NonTerminal Rule: CmpFunc_Greater
|
|
break;
|
|
case TokenType.NotEqual:
|
|
ParseCmpFunc_NotEqual(node); // NonTerminal Rule: CmpFunc_NotEqual
|
|
break;
|
|
case TokenType.GreaterEqual:
|
|
ParseCmpFunc_GreaterEqual(node); // NonTerminal Rule: CmpFunc_GreaterEqual
|
|
break;
|
|
case TokenType.Always:
|
|
ParseCmpFunc_Always(node); // NonTerminal Rule: CmpFunc_Always
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Never, Less, Equal, LessEqual, Greater, NotEqual, GreaterEqual, or Always.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: CmpFunc
|
|
|
|
private void ParseStencilOp_Keep(ParseNode parent) // NonTerminalSymbol: StencilOp_Keep
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.StencilOp_Keep), "StencilOp_Keep");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Keep); // Terminal Rule: Keep
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Keep) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Keep.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: StencilOp_Keep
|
|
|
|
private void ParseStencilOp_Zero(ParseNode parent) // NonTerminalSymbol: StencilOp_Zero
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.StencilOp_Zero), "StencilOp_Zero");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Zero); // Terminal Rule: Zero
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Zero) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Zero.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: StencilOp_Zero
|
|
|
|
private void ParseStencilOp_Replace(ParseNode parent) // NonTerminalSymbol: StencilOp_Replace
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.StencilOp_Replace), "StencilOp_Replace");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Replace); // Terminal Rule: Replace
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Replace) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Replace.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: StencilOp_Replace
|
|
|
|
private void ParseStencilOp_IncrSat(ParseNode parent) // NonTerminalSymbol: StencilOp_IncrSat
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.StencilOp_IncrSat), "StencilOp_IncrSat");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.IncrSat); // Terminal Rule: IncrSat
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.IncrSat) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.IncrSat.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: StencilOp_IncrSat
|
|
|
|
private void ParseStencilOp_DecrSat(ParseNode parent) // NonTerminalSymbol: StencilOp_DecrSat
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.StencilOp_DecrSat), "StencilOp_DecrSat");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.DecrSat); // Terminal Rule: DecrSat
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.DecrSat) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.DecrSat.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: StencilOp_DecrSat
|
|
|
|
private void ParseStencilOp_Invert(ParseNode parent) // NonTerminalSymbol: StencilOp_Invert
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.StencilOp_Invert), "StencilOp_Invert");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Invert); // Terminal Rule: Invert
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Invert) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Invert.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: StencilOp_Invert
|
|
|
|
private void ParseStencilOp_Incr(ParseNode parent) // NonTerminalSymbol: StencilOp_Incr
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.StencilOp_Incr), "StencilOp_Incr");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Incr); // Terminal Rule: Incr
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Incr) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Incr.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: StencilOp_Incr
|
|
|
|
private void ParseStencilOp_Decr(ParseNode parent) // NonTerminalSymbol: StencilOp_Decr
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.StencilOp_Decr), "StencilOp_Decr");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Decr); // Terminal Rule: Decr
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Decr) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Decr.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: StencilOp_Decr
|
|
|
|
private void ParseStencilOp(ParseNode parent) // NonTerminalSymbol: StencilOp
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.StencilOp), "StencilOp");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.Keep, TokenType.Zero, TokenType.Replace, TokenType.IncrSat, TokenType.DecrSat, TokenType.Invert, TokenType.Incr, TokenType.Decr); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Keep:
|
|
ParseStencilOp_Keep(node); // NonTerminal Rule: StencilOp_Keep
|
|
break;
|
|
case TokenType.Zero:
|
|
ParseStencilOp_Zero(node); // NonTerminal Rule: StencilOp_Zero
|
|
break;
|
|
case TokenType.Replace:
|
|
ParseStencilOp_Replace(node); // NonTerminal Rule: StencilOp_Replace
|
|
break;
|
|
case TokenType.IncrSat:
|
|
ParseStencilOp_IncrSat(node); // NonTerminal Rule: StencilOp_IncrSat
|
|
break;
|
|
case TokenType.DecrSat:
|
|
ParseStencilOp_DecrSat(node); // NonTerminal Rule: StencilOp_DecrSat
|
|
break;
|
|
case TokenType.Invert:
|
|
ParseStencilOp_Invert(node); // NonTerminal Rule: StencilOp_Invert
|
|
break;
|
|
case TokenType.Incr:
|
|
ParseStencilOp_Incr(node); // NonTerminal Rule: StencilOp_Incr
|
|
break;
|
|
case TokenType.Decr:
|
|
ParseStencilOp_Decr(node); // NonTerminal Rule: StencilOp_Decr
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Keep, Zero, Replace, IncrSat, DecrSat, Invert, Incr, or Decr.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: StencilOp
|
|
|
|
private void ParseRender_State_CullMode(ParseNode parent) // NonTerminalSymbol: Render_State_CullMode
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_CullMode), "Render_State_CullMode");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.CullMode); // Terminal Rule: CullMode
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CullMode) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CullMode.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseCullModes(node); // NonTerminal Rule: CullModes
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_CullMode
|
|
|
|
private void ParseRender_State_FillMode(ParseNode parent) // NonTerminalSymbol: Render_State_FillMode
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_FillMode), "Render_State_FillMode");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.FillMode); // Terminal Rule: FillMode
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.FillMode) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.FillMode.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseFillModes(node); // NonTerminal Rule: FillModes
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_FillMode
|
|
|
|
private void ParseRender_State_AlphaBlendEnable(ParseNode parent) // NonTerminalSymbol: Render_State_AlphaBlendEnable
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_AlphaBlendEnable), "Render_State_AlphaBlendEnable");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.AlphaBlendEnable); // Terminal Rule: AlphaBlendEnable
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.AlphaBlendEnable) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.AlphaBlendEnable.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Boolean); // Terminal Rule: Boolean
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Boolean) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Boolean.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_AlphaBlendEnable
|
|
|
|
private void ParseRender_State_SrcBlend(ParseNode parent) // NonTerminalSymbol: Render_State_SrcBlend
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_SrcBlend), "Render_State_SrcBlend");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.SrcBlend); // Terminal Rule: SrcBlend
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.SrcBlend) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.SrcBlend.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseBlends(node); // NonTerminal Rule: Blends
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_SrcBlend
|
|
|
|
private void ParseRender_State_DestBlend(ParseNode parent) // NonTerminalSymbol: Render_State_DestBlend
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_DestBlend), "Render_State_DestBlend");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.DestBlend); // Terminal Rule: DestBlend
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.DestBlend) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.DestBlend.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseBlends(node); // NonTerminal Rule: Blends
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_DestBlend
|
|
|
|
private void ParseRender_State_BlendOp(ParseNode parent) // NonTerminalSymbol: Render_State_BlendOp
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_BlendOp), "Render_State_BlendOp");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.BlendOp); // Terminal Rule: BlendOp
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.BlendOp) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BlendOp.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseBlendOps(node); // NonTerminal Rule: BlendOps
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_BlendOp
|
|
|
|
private void ParseRender_State_ColorWriteEnable(ParseNode parent) // NonTerminalSymbol: Render_State_ColorWriteEnable
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_ColorWriteEnable), "Render_State_ColorWriteEnable");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.ColorWriteEnable); // Terminal Rule: ColorWriteEnable
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.ColorWriteEnable) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.ColorWriteEnable.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseColorsMasks(node); // NonTerminal Rule: ColorsMasks
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_ColorWriteEnable
|
|
|
|
private void ParseRender_State_DepthBias(ParseNode parent) // NonTerminalSymbol: Render_State_DepthBias
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_DepthBias), "Render_State_DepthBias");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.DepthBias); // Terminal Rule: DepthBias
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.DepthBias) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.DepthBias.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Number); // Terminal Rule: Number
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Number) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Number.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_DepthBias
|
|
|
|
private void ParseRender_State_SlopeScaleDepthBias(ParseNode parent) // NonTerminalSymbol: Render_State_SlopeScaleDepthBias
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_SlopeScaleDepthBias), "Render_State_SlopeScaleDepthBias");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.SlopeScaleDepthBias); // Terminal Rule: SlopeScaleDepthBias
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.SlopeScaleDepthBias) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.SlopeScaleDepthBias.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Number); // Terminal Rule: Number
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Number) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Number.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_SlopeScaleDepthBias
|
|
|
|
private void ParseRender_State_ZEnable(ParseNode parent) // NonTerminalSymbol: Render_State_ZEnable
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_ZEnable), "Render_State_ZEnable");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.ZEnable); // Terminal Rule: ZEnable
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.ZEnable) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.ZEnable.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Boolean); // Terminal Rule: Boolean
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Boolean) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Boolean.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_ZEnable
|
|
|
|
private void ParseRender_State_ZWriteEnable(ParseNode parent) // NonTerminalSymbol: Render_State_ZWriteEnable
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_ZWriteEnable), "Render_State_ZWriteEnable");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.ZWriteEnable); // Terminal Rule: ZWriteEnable
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.ZWriteEnable) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.ZWriteEnable.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Boolean); // Terminal Rule: Boolean
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Boolean) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Boolean.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_ZWriteEnable
|
|
|
|
private void ParseRender_State_ZFunc(ParseNode parent) // NonTerminalSymbol: Render_State_ZFunc
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_ZFunc), "Render_State_ZFunc");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.ZFunc); // Terminal Rule: ZFunc
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.ZFunc) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.ZFunc.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseCmpFunc(node); // NonTerminal Rule: CmpFunc
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_ZFunc
|
|
|
|
private void ParseRender_State_MultiSampleAntiAlias(ParseNode parent) // NonTerminalSymbol: Render_State_MultiSampleAntiAlias
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_MultiSampleAntiAlias), "Render_State_MultiSampleAntiAlias");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.MultiSampleAntiAlias); // Terminal Rule: MultiSampleAntiAlias
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.MultiSampleAntiAlias) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.MultiSampleAntiAlias.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Boolean); // Terminal Rule: Boolean
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Boolean) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Boolean.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_MultiSampleAntiAlias
|
|
|
|
private void ParseRender_State_ScissorTestEnable(ParseNode parent) // NonTerminalSymbol: Render_State_ScissorTestEnable
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_ScissorTestEnable), "Render_State_ScissorTestEnable");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.ScissorTestEnable); // Terminal Rule: ScissorTestEnable
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.ScissorTestEnable) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.ScissorTestEnable.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Boolean); // Terminal Rule: Boolean
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Boolean) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Boolean.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_ScissorTestEnable
|
|
|
|
private void ParseRender_State_StencilEnable(ParseNode parent) // NonTerminalSymbol: Render_State_StencilEnable
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_StencilEnable), "Render_State_StencilEnable");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.StencilEnable); // Terminal Rule: StencilEnable
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.StencilEnable) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.StencilEnable.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Boolean); // Terminal Rule: Boolean
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Boolean) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Boolean.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_StencilEnable
|
|
|
|
private void ParseRender_State_StencilFail(ParseNode parent) // NonTerminalSymbol: Render_State_StencilFail
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_StencilFail), "Render_State_StencilFail");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.StencilFail); // Terminal Rule: StencilFail
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.StencilFail) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.StencilFail.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseStencilOp(node); // NonTerminal Rule: StencilOp
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_StencilFail
|
|
|
|
private void ParseRender_State_StencilFunc(ParseNode parent) // NonTerminalSymbol: Render_State_StencilFunc
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_StencilFunc), "Render_State_StencilFunc");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.StencilFunc); // Terminal Rule: StencilFunc
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.StencilFunc) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.StencilFunc.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseCmpFunc(node); // NonTerminal Rule: CmpFunc
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_StencilFunc
|
|
|
|
private void ParseRender_State_StencilMask(ParseNode parent) // NonTerminalSymbol: Render_State_StencilMask
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_StencilMask), "Render_State_StencilMask");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.StencilMask); // Terminal Rule: StencilMask
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.StencilMask) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.StencilMask.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Number); // Terminal Rule: Number
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Number) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Number.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_StencilMask
|
|
|
|
private void ParseRender_State_StencilPass(ParseNode parent) // NonTerminalSymbol: Render_State_StencilPass
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_StencilPass), "Render_State_StencilPass");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.StencilPass); // Terminal Rule: StencilPass
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.StencilPass) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.StencilPass.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseStencilOp(node); // NonTerminal Rule: StencilOp
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_StencilPass
|
|
|
|
private void ParseRender_State_StencilRef(ParseNode parent) // NonTerminalSymbol: Render_State_StencilRef
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_StencilRef), "Render_State_StencilRef");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.StencilRef); // Terminal Rule: StencilRef
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.StencilRef) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.StencilRef.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Number); // Terminal Rule: Number
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Number) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Number.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_StencilRef
|
|
|
|
private void ParseRender_State_StencilWriteMask(ParseNode parent) // NonTerminalSymbol: Render_State_StencilWriteMask
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_StencilWriteMask), "Render_State_StencilWriteMask");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.StencilWriteMask); // Terminal Rule: StencilWriteMask
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.StencilWriteMask) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.StencilWriteMask.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Number); // Terminal Rule: Number
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Number) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Number.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_StencilWriteMask
|
|
|
|
private void ParseRender_State_StencilZFail(ParseNode parent) // NonTerminalSymbol: Render_State_StencilZFail
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_StencilZFail), "Render_State_StencilZFail");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.StencilZFail); // Terminal Rule: StencilZFail
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.StencilZFail) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.StencilZFail.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseStencilOp(node); // NonTerminal Rule: StencilOp
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_StencilZFail
|
|
|
|
private void ParseRender_State_Expression(ParseNode parent) // NonTerminalSymbol: Render_State_Expression
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Render_State_Expression), "Render_State_Expression");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.CullMode, TokenType.FillMode, TokenType.AlphaBlendEnable, TokenType.SrcBlend, TokenType.DestBlend, TokenType.BlendOp, TokenType.ColorWriteEnable, TokenType.DepthBias, TokenType.SlopeScaleDepthBias, TokenType.ZEnable, TokenType.ZWriteEnable, TokenType.ZFunc, TokenType.MultiSampleAntiAlias, TokenType.ScissorTestEnable, TokenType.StencilEnable, TokenType.StencilFail, TokenType.StencilFunc, TokenType.StencilMask, TokenType.StencilPass, TokenType.StencilRef, TokenType.StencilWriteMask, TokenType.StencilZFail); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.CullMode:
|
|
ParseRender_State_CullMode(node); // NonTerminal Rule: Render_State_CullMode
|
|
break;
|
|
case TokenType.FillMode:
|
|
ParseRender_State_FillMode(node); // NonTerminal Rule: Render_State_FillMode
|
|
break;
|
|
case TokenType.AlphaBlendEnable:
|
|
ParseRender_State_AlphaBlendEnable(node); // NonTerminal Rule: Render_State_AlphaBlendEnable
|
|
break;
|
|
case TokenType.SrcBlend:
|
|
ParseRender_State_SrcBlend(node); // NonTerminal Rule: Render_State_SrcBlend
|
|
break;
|
|
case TokenType.DestBlend:
|
|
ParseRender_State_DestBlend(node); // NonTerminal Rule: Render_State_DestBlend
|
|
break;
|
|
case TokenType.BlendOp:
|
|
ParseRender_State_BlendOp(node); // NonTerminal Rule: Render_State_BlendOp
|
|
break;
|
|
case TokenType.ColorWriteEnable:
|
|
ParseRender_State_ColorWriteEnable(node); // NonTerminal Rule: Render_State_ColorWriteEnable
|
|
break;
|
|
case TokenType.DepthBias:
|
|
ParseRender_State_DepthBias(node); // NonTerminal Rule: Render_State_DepthBias
|
|
break;
|
|
case TokenType.SlopeScaleDepthBias:
|
|
ParseRender_State_SlopeScaleDepthBias(node); // NonTerminal Rule: Render_State_SlopeScaleDepthBias
|
|
break;
|
|
case TokenType.ZEnable:
|
|
ParseRender_State_ZEnable(node); // NonTerminal Rule: Render_State_ZEnable
|
|
break;
|
|
case TokenType.ZWriteEnable:
|
|
ParseRender_State_ZWriteEnable(node); // NonTerminal Rule: Render_State_ZWriteEnable
|
|
break;
|
|
case TokenType.ZFunc:
|
|
ParseRender_State_ZFunc(node); // NonTerminal Rule: Render_State_ZFunc
|
|
break;
|
|
case TokenType.MultiSampleAntiAlias:
|
|
ParseRender_State_MultiSampleAntiAlias(node); // NonTerminal Rule: Render_State_MultiSampleAntiAlias
|
|
break;
|
|
case TokenType.ScissorTestEnable:
|
|
ParseRender_State_ScissorTestEnable(node); // NonTerminal Rule: Render_State_ScissorTestEnable
|
|
break;
|
|
case TokenType.StencilEnable:
|
|
ParseRender_State_StencilEnable(node); // NonTerminal Rule: Render_State_StencilEnable
|
|
break;
|
|
case TokenType.StencilFail:
|
|
ParseRender_State_StencilFail(node); // NonTerminal Rule: Render_State_StencilFail
|
|
break;
|
|
case TokenType.StencilFunc:
|
|
ParseRender_State_StencilFunc(node); // NonTerminal Rule: Render_State_StencilFunc
|
|
break;
|
|
case TokenType.StencilMask:
|
|
ParseRender_State_StencilMask(node); // NonTerminal Rule: Render_State_StencilMask
|
|
break;
|
|
case TokenType.StencilPass:
|
|
ParseRender_State_StencilPass(node); // NonTerminal Rule: Render_State_StencilPass
|
|
break;
|
|
case TokenType.StencilRef:
|
|
ParseRender_State_StencilRef(node); // NonTerminal Rule: Render_State_StencilRef
|
|
break;
|
|
case TokenType.StencilWriteMask:
|
|
ParseRender_State_StencilWriteMask(node); // NonTerminal Rule: Render_State_StencilWriteMask
|
|
break;
|
|
case TokenType.StencilZFail:
|
|
ParseRender_State_StencilZFail(node); // NonTerminal Rule: Render_State_StencilZFail
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected CullMode, FillMode, AlphaBlendEnable, SrcBlend, DestBlend, BlendOp, ColorWriteEnable, DepthBias, SlopeScaleDepthBias, ZEnable, ZWriteEnable, ZFunc, MultiSampleAntiAlias, ScissorTestEnable, StencilEnable, StencilFail, StencilFunc, StencilMask, StencilPass, StencilRef, StencilWriteMask, or StencilZFail.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Render_State_Expression
|
|
|
|
private void ParsePass_Declaration(ParseNode parent) // NonTerminalSymbol: Pass_Declaration
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Pass_Declaration), "Pass_Declaration");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Pass); // Terminal Rule: Pass
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Pass) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Pass.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Identifier); // Option Rule
|
|
if (tok.Type == TokenType.Identifier)
|
|
{
|
|
tok = scanner.Scan(TokenType.Identifier); // Terminal Rule: Identifier
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Identifier) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Identifier.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.OpenBracket); // Terminal Rule: OpenBracket
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.OpenBracket) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.OpenBracket.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.VertexShader, TokenType.PixelShader, TokenType.CullMode, TokenType.FillMode, TokenType.AlphaBlendEnable, TokenType.SrcBlend, TokenType.DestBlend, TokenType.BlendOp, TokenType.ColorWriteEnable, TokenType.DepthBias, TokenType.SlopeScaleDepthBias, TokenType.ZEnable, TokenType.ZWriteEnable, TokenType.ZFunc, TokenType.MultiSampleAntiAlias, TokenType.ScissorTestEnable, TokenType.StencilEnable, TokenType.StencilFail, TokenType.StencilFunc, TokenType.StencilMask, TokenType.StencilPass, TokenType.StencilRef, TokenType.StencilWriteMask, TokenType.StencilZFail); // ZeroOrMore Rule
|
|
while (tok.Type == TokenType.VertexShader
|
|
|| tok.Type == TokenType.PixelShader
|
|
|| tok.Type == TokenType.CullMode
|
|
|| tok.Type == TokenType.FillMode
|
|
|| tok.Type == TokenType.AlphaBlendEnable
|
|
|| tok.Type == TokenType.SrcBlend
|
|
|| tok.Type == TokenType.DestBlend
|
|
|| tok.Type == TokenType.BlendOp
|
|
|| tok.Type == TokenType.ColorWriteEnable
|
|
|| tok.Type == TokenType.DepthBias
|
|
|| tok.Type == TokenType.SlopeScaleDepthBias
|
|
|| tok.Type == TokenType.ZEnable
|
|
|| tok.Type == TokenType.ZWriteEnable
|
|
|| tok.Type == TokenType.ZFunc
|
|
|| tok.Type == TokenType.MultiSampleAntiAlias
|
|
|| tok.Type == TokenType.ScissorTestEnable
|
|
|| tok.Type == TokenType.StencilEnable
|
|
|| tok.Type == TokenType.StencilFail
|
|
|| tok.Type == TokenType.StencilFunc
|
|
|| tok.Type == TokenType.StencilMask
|
|
|| tok.Type == TokenType.StencilPass
|
|
|| tok.Type == TokenType.StencilRef
|
|
|| tok.Type == TokenType.StencilWriteMask
|
|
|| tok.Type == TokenType.StencilZFail)
|
|
{
|
|
tok = scanner.LookAhead(TokenType.VertexShader, TokenType.PixelShader, TokenType.CullMode, TokenType.FillMode, TokenType.AlphaBlendEnable, TokenType.SrcBlend, TokenType.DestBlend, TokenType.BlendOp, TokenType.ColorWriteEnable, TokenType.DepthBias, TokenType.SlopeScaleDepthBias, TokenType.ZEnable, TokenType.ZWriteEnable, TokenType.ZFunc, TokenType.MultiSampleAntiAlias, TokenType.ScissorTestEnable, TokenType.StencilEnable, TokenType.StencilFail, TokenType.StencilFunc, TokenType.StencilMask, TokenType.StencilPass, TokenType.StencilRef, TokenType.StencilWriteMask, TokenType.StencilZFail); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.VertexShader:
|
|
ParseVertexShader_Pass_Expression(node); // NonTerminal Rule: VertexShader_Pass_Expression
|
|
break;
|
|
case TokenType.PixelShader:
|
|
ParsePixelShader_Pass_Expression(node); // NonTerminal Rule: PixelShader_Pass_Expression
|
|
break;
|
|
case TokenType.CullMode:
|
|
case TokenType.FillMode:
|
|
case TokenType.AlphaBlendEnable:
|
|
case TokenType.SrcBlend:
|
|
case TokenType.DestBlend:
|
|
case TokenType.BlendOp:
|
|
case TokenType.ColorWriteEnable:
|
|
case TokenType.DepthBias:
|
|
case TokenType.SlopeScaleDepthBias:
|
|
case TokenType.ZEnable:
|
|
case TokenType.ZWriteEnable:
|
|
case TokenType.ZFunc:
|
|
case TokenType.MultiSampleAntiAlias:
|
|
case TokenType.ScissorTestEnable:
|
|
case TokenType.StencilEnable:
|
|
case TokenType.StencilFail:
|
|
case TokenType.StencilFunc:
|
|
case TokenType.StencilMask:
|
|
case TokenType.StencilPass:
|
|
case TokenType.StencilRef:
|
|
case TokenType.StencilWriteMask:
|
|
case TokenType.StencilZFail:
|
|
ParseRender_State_Expression(node); // NonTerminal Rule: Render_State_Expression
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected VertexShader, PixelShader, CullMode, FillMode, AlphaBlendEnable, SrcBlend, DestBlend, BlendOp, ColorWriteEnable, DepthBias, SlopeScaleDepthBias, ZEnable, ZWriteEnable, ZFunc, MultiSampleAntiAlias, ScissorTestEnable, StencilEnable, StencilFail, StencilFunc, StencilMask, StencilPass, StencilRef, StencilWriteMask, or StencilZFail.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
tok = scanner.LookAhead(TokenType.VertexShader, TokenType.PixelShader, TokenType.CullMode, TokenType.FillMode, TokenType.AlphaBlendEnable, TokenType.SrcBlend, TokenType.DestBlend, TokenType.BlendOp, TokenType.ColorWriteEnable, TokenType.DepthBias, TokenType.SlopeScaleDepthBias, TokenType.ZEnable, TokenType.ZWriteEnable, TokenType.ZFunc, TokenType.MultiSampleAntiAlias, TokenType.ScissorTestEnable, TokenType.StencilEnable, TokenType.StencilFail, TokenType.StencilFunc, TokenType.StencilMask, TokenType.StencilPass, TokenType.StencilRef, TokenType.StencilWriteMask, TokenType.StencilZFail); // ZeroOrMore Rule
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.CloseBracket); // Terminal Rule: CloseBracket
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CloseBracket) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CloseBracket.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Pass_Declaration
|
|
|
|
private void ParseVertexShader_Pass_Expression(ParseNode parent) // NonTerminalSymbol: VertexShader_Pass_Expression
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.VertexShader_Pass_Expression), "VertexShader_Pass_Expression");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.VertexShader); // Terminal Rule: VertexShader
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.VertexShader) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.VertexShader.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Compile); // Terminal Rule: Compile
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Compile) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Compile.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.ShaderModel); // Terminal Rule: ShaderModel
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.ShaderModel) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.ShaderModel.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Identifier); // Terminal Rule: Identifier
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Identifier) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Identifier.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.OpenParenthesis); // Terminal Rule: OpenParenthesis
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.OpenParenthesis) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.OpenParenthesis.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.CloseParenthesis); // Terminal Rule: CloseParenthesis
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CloseParenthesis) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CloseParenthesis.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: VertexShader_Pass_Expression
|
|
|
|
private void ParsePixelShader_Pass_Expression(ParseNode parent) // NonTerminalSymbol: PixelShader_Pass_Expression
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.PixelShader_Pass_Expression), "PixelShader_Pass_Expression");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.PixelShader); // Terminal Rule: PixelShader
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.PixelShader) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.PixelShader.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Compile); // Terminal Rule: Compile
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Compile) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Compile.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.ShaderModel); // Terminal Rule: ShaderModel
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.ShaderModel) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.ShaderModel.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Identifier); // Terminal Rule: Identifier
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Identifier) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Identifier.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.OpenParenthesis); // Terminal Rule: OpenParenthesis
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.OpenParenthesis) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.OpenParenthesis.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.CloseParenthesis); // Terminal Rule: CloseParenthesis
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CloseParenthesis) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CloseParenthesis.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: PixelShader_Pass_Expression
|
|
|
|
private void ParseAddressMode_Clamp(ParseNode parent) // NonTerminalSymbol: AddressMode_Clamp
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.AddressMode_Clamp), "AddressMode_Clamp");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Clamp); // Terminal Rule: Clamp
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Clamp) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Clamp.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: AddressMode_Clamp
|
|
|
|
private void ParseAddressMode_Wrap(ParseNode parent) // NonTerminalSymbol: AddressMode_Wrap
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.AddressMode_Wrap), "AddressMode_Wrap");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Wrap); // Terminal Rule: Wrap
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Wrap) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Wrap.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: AddressMode_Wrap
|
|
|
|
private void ParseAddressMode_Mirror(ParseNode parent) // NonTerminalSymbol: AddressMode_Mirror
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.AddressMode_Mirror), "AddressMode_Mirror");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Mirror); // Terminal Rule: Mirror
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Mirror) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Mirror.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: AddressMode_Mirror
|
|
|
|
private void ParseAddressMode_Border(ParseNode parent) // NonTerminalSymbol: AddressMode_Border
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.AddressMode_Border), "AddressMode_Border");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Border); // Terminal Rule: Border
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Border) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Border.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: AddressMode_Border
|
|
|
|
private void ParseAddressMode(ParseNode parent) // NonTerminalSymbol: AddressMode
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.AddressMode), "AddressMode");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.Clamp, TokenType.Wrap, TokenType.Mirror, TokenType.Border); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Clamp:
|
|
ParseAddressMode_Clamp(node); // NonTerminal Rule: AddressMode_Clamp
|
|
break;
|
|
case TokenType.Wrap:
|
|
ParseAddressMode_Wrap(node); // NonTerminal Rule: AddressMode_Wrap
|
|
break;
|
|
case TokenType.Mirror:
|
|
ParseAddressMode_Mirror(node); // NonTerminal Rule: AddressMode_Mirror
|
|
break;
|
|
case TokenType.Border:
|
|
ParseAddressMode_Border(node); // NonTerminal Rule: AddressMode_Border
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Clamp, Wrap, Mirror, or Border.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: AddressMode
|
|
|
|
private void ParseTextureFilter_None(ParseNode parent) // NonTerminalSymbol: TextureFilter_None
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.TextureFilter_None), "TextureFilter_None");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.None); // Terminal Rule: None
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.None) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.None.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: TextureFilter_None
|
|
|
|
private void ParseTextureFilter_Linear(ParseNode parent) // NonTerminalSymbol: TextureFilter_Linear
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.TextureFilter_Linear), "TextureFilter_Linear");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Linear); // Terminal Rule: Linear
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Linear) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Linear.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: TextureFilter_Linear
|
|
|
|
private void ParseTextureFilter_Point(ParseNode parent) // NonTerminalSymbol: TextureFilter_Point
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.TextureFilter_Point), "TextureFilter_Point");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Point); // Terminal Rule: Point
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Point) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Point.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: TextureFilter_Point
|
|
|
|
private void ParseTextureFilter_Anisotropic(ParseNode parent) // NonTerminalSymbol: TextureFilter_Anisotropic
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.TextureFilter_Anisotropic), "TextureFilter_Anisotropic");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.Scan(TokenType.Anisotropic); // Terminal Rule: Anisotropic
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Anisotropic) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Anisotropic.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: TextureFilter_Anisotropic
|
|
|
|
private void ParseTextureFilter(ParseNode parent) // NonTerminalSymbol: TextureFilter
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.TextureFilter), "TextureFilter");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.None, TokenType.Linear, TokenType.Point, TokenType.Anisotropic); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.None:
|
|
ParseTextureFilter_None(node); // NonTerminal Rule: TextureFilter_None
|
|
break;
|
|
case TokenType.Linear:
|
|
ParseTextureFilter_Linear(node); // NonTerminal Rule: TextureFilter_Linear
|
|
break;
|
|
case TokenType.Point:
|
|
ParseTextureFilter_Point(node); // NonTerminal Rule: TextureFilter_Point
|
|
break;
|
|
case TokenType.Anisotropic:
|
|
ParseTextureFilter_Anisotropic(node); // NonTerminal Rule: TextureFilter_Anisotropic
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected None, Linear, Point, or Anisotropic.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: TextureFilter
|
|
|
|
private void ParseSampler_State_Texture(ParseNode parent) // NonTerminalSymbol: Sampler_State_Texture
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_Texture), "Sampler_State_Texture");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Texture); // Terminal Rule: Texture
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Texture) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Texture.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.LessThan, TokenType.OpenParenthesis); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.LessThan:
|
|
tok = scanner.Scan(TokenType.LessThan); // Terminal Rule: LessThan
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.LessThan) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.LessThan.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
break;
|
|
case TokenType.OpenParenthesis:
|
|
tok = scanner.Scan(TokenType.OpenParenthesis); // Terminal Rule: OpenParenthesis
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.OpenParenthesis) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.OpenParenthesis.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected LessThan or OpenParenthesis.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Identifier); // Terminal Rule: Identifier
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Identifier) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Identifier.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.GreaterThan, TokenType.CloseParenthesis); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.GreaterThan:
|
|
tok = scanner.Scan(TokenType.GreaterThan); // Terminal Rule: GreaterThan
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.GreaterThan) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.GreaterThan.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
break;
|
|
case TokenType.CloseParenthesis:
|
|
tok = scanner.Scan(TokenType.CloseParenthesis); // Terminal Rule: CloseParenthesis
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CloseParenthesis) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CloseParenthesis.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected GreaterThan or CloseParenthesis.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_Texture
|
|
|
|
private void ParseSampler_State_MinFilter(ParseNode parent) // NonTerminalSymbol: Sampler_State_MinFilter
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_MinFilter), "Sampler_State_MinFilter");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.MinFilter); // Terminal Rule: MinFilter
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.MinFilter) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.MinFilter.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseTextureFilter(node); // NonTerminal Rule: TextureFilter
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_MinFilter
|
|
|
|
private void ParseSampler_State_MagFilter(ParseNode parent) // NonTerminalSymbol: Sampler_State_MagFilter
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_MagFilter), "Sampler_State_MagFilter");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.MagFilter); // Terminal Rule: MagFilter
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.MagFilter) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.MagFilter.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseTextureFilter(node); // NonTerminal Rule: TextureFilter
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_MagFilter
|
|
|
|
private void ParseSampler_State_MipFilter(ParseNode parent) // NonTerminalSymbol: Sampler_State_MipFilter
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_MipFilter), "Sampler_State_MipFilter");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.MipFilter); // Terminal Rule: MipFilter
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.MipFilter) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.MipFilter.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseTextureFilter(node); // NonTerminal Rule: TextureFilter
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_MipFilter
|
|
|
|
private void ParseSampler_State_Filter(ParseNode parent) // NonTerminalSymbol: Sampler_State_Filter
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_Filter), "Sampler_State_Filter");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Filter); // Terminal Rule: Filter
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Filter) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Filter.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseTextureFilter(node); // NonTerminal Rule: TextureFilter
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_Filter
|
|
|
|
private void ParseSampler_State_AddressU(ParseNode parent) // NonTerminalSymbol: Sampler_State_AddressU
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_AddressU), "Sampler_State_AddressU");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.AddressU); // Terminal Rule: AddressU
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.AddressU) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.AddressU.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseAddressMode(node); // NonTerminal Rule: AddressMode
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_AddressU
|
|
|
|
private void ParseSampler_State_AddressV(ParseNode parent) // NonTerminalSymbol: Sampler_State_AddressV
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_AddressV), "Sampler_State_AddressV");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.AddressV); // Terminal Rule: AddressV
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.AddressV) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.AddressV.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseAddressMode(node); // NonTerminal Rule: AddressMode
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_AddressV
|
|
|
|
private void ParseSampler_State_AddressW(ParseNode parent) // NonTerminalSymbol: Sampler_State_AddressW
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_AddressW), "Sampler_State_AddressW");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.AddressW); // Terminal Rule: AddressW
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.AddressW) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.AddressW.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
ParseAddressMode(node); // NonTerminal Rule: AddressMode
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_AddressW
|
|
|
|
private void ParseSampler_State_BorderColor(ParseNode parent) // NonTerminalSymbol: Sampler_State_BorderColor
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_BorderColor), "Sampler_State_BorderColor");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.BorderColor); // Terminal Rule: BorderColor
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.BorderColor) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BorderColor.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.HexColor); // Terminal Rule: HexColor
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.HexColor) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.HexColor.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_BorderColor
|
|
|
|
private void ParseSampler_State_MaxMipLevel(ParseNode parent) // NonTerminalSymbol: Sampler_State_MaxMipLevel
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_MaxMipLevel), "Sampler_State_MaxMipLevel");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.MaxMipLevel); // Terminal Rule: MaxMipLevel
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.MaxMipLevel) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.MaxMipLevel.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Number); // Terminal Rule: Number
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Number) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Number.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_MaxMipLevel
|
|
|
|
private void ParseSampler_State_MaxAnisotropy(ParseNode parent) // NonTerminalSymbol: Sampler_State_MaxAnisotropy
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_MaxAnisotropy), "Sampler_State_MaxAnisotropy");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.MaxAnisotropy); // Terminal Rule: MaxAnisotropy
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.MaxAnisotropy) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.MaxAnisotropy.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Number); // Terminal Rule: Number
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Number) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Number.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_MaxAnisotropy
|
|
|
|
private void ParseSampler_State_MipLodBias(ParseNode parent) // NonTerminalSymbol: Sampler_State_MipLodBias
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_MipLodBias), "Sampler_State_MipLodBias");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.MipLodBias); // Terminal Rule: MipLodBias
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.MipLodBias) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.MipLodBias.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Number); // Terminal Rule: Number
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Number) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Number.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_MipLodBias
|
|
|
|
private void ParseSampler_State_Expression(ParseNode parent) // NonTerminalSymbol: Sampler_State_Expression
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_State_Expression), "Sampler_State_Expression");
|
|
parent.Nodes.Add(node);
|
|
|
|
tok = scanner.LookAhead(TokenType.Texture, TokenType.MinFilter, TokenType.MagFilter, TokenType.MipFilter, TokenType.Filter, TokenType.AddressU, TokenType.AddressV, TokenType.AddressW, TokenType.BorderColor, TokenType.MaxMipLevel, TokenType.MaxAnisotropy, TokenType.MipLodBias); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Texture:
|
|
ParseSampler_State_Texture(node); // NonTerminal Rule: Sampler_State_Texture
|
|
break;
|
|
case TokenType.MinFilter:
|
|
ParseSampler_State_MinFilter(node); // NonTerminal Rule: Sampler_State_MinFilter
|
|
break;
|
|
case TokenType.MagFilter:
|
|
ParseSampler_State_MagFilter(node); // NonTerminal Rule: Sampler_State_MagFilter
|
|
break;
|
|
case TokenType.MipFilter:
|
|
ParseSampler_State_MipFilter(node); // NonTerminal Rule: Sampler_State_MipFilter
|
|
break;
|
|
case TokenType.Filter:
|
|
ParseSampler_State_Filter(node); // NonTerminal Rule: Sampler_State_Filter
|
|
break;
|
|
case TokenType.AddressU:
|
|
ParseSampler_State_AddressU(node); // NonTerminal Rule: Sampler_State_AddressU
|
|
break;
|
|
case TokenType.AddressV:
|
|
ParseSampler_State_AddressV(node); // NonTerminal Rule: Sampler_State_AddressV
|
|
break;
|
|
case TokenType.AddressW:
|
|
ParseSampler_State_AddressW(node); // NonTerminal Rule: Sampler_State_AddressW
|
|
break;
|
|
case TokenType.BorderColor:
|
|
ParseSampler_State_BorderColor(node); // NonTerminal Rule: Sampler_State_BorderColor
|
|
break;
|
|
case TokenType.MaxMipLevel:
|
|
ParseSampler_State_MaxMipLevel(node); // NonTerminal Rule: Sampler_State_MaxMipLevel
|
|
break;
|
|
case TokenType.MaxAnisotropy:
|
|
ParseSampler_State_MaxAnisotropy(node); // NonTerminal Rule: Sampler_State_MaxAnisotropy
|
|
break;
|
|
case TokenType.MipLodBias:
|
|
ParseSampler_State_MipLodBias(node); // NonTerminal Rule: Sampler_State_MipLodBias
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Texture, MinFilter, MagFilter, MipFilter, Filter, AddressU, AddressV, AddressW, BorderColor, MaxMipLevel, MaxAnisotropy, or MipLodBias.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_State_Expression
|
|
|
|
private void ParseSampler_Register_Expression(ParseNode parent) // NonTerminalSymbol: Sampler_Register_Expression
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_Register_Expression), "Sampler_Register_Expression");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Colon); // Terminal Rule: Colon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Colon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Colon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Register); // Terminal Rule: Register
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Register) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Register.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.OpenParenthesis); // Terminal Rule: OpenParenthesis
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.OpenParenthesis) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.OpenParenthesis.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Identifier); // Terminal Rule: Identifier
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Identifier) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Identifier.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Comma); // Option Rule
|
|
if (tok.Type == TokenType.Comma)
|
|
{
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Comma); // Terminal Rule: Comma
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Comma) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Comma.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Identifier); // Terminal Rule: Identifier
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Identifier) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Identifier.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.OpenSquareBracket); // Option Rule
|
|
if (tok.Type == TokenType.OpenSquareBracket)
|
|
{
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.OpenSquareBracket); // Terminal Rule: OpenSquareBracket
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.OpenSquareBracket) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.OpenSquareBracket.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Number); // Terminal Rule: Number
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Number) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Number.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.CloseSquareBracket); // Terminal Rule: CloseSquareBracket
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CloseSquareBracket) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CloseSquareBracket.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.CloseParenthesis); // Terminal Rule: CloseParenthesis
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CloseParenthesis) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CloseParenthesis.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_Register_Expression
|
|
|
|
private void ParseSampler_Declaration_States(ParseNode parent) // NonTerminalSymbol: Sampler_Declaration_States
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_Declaration_States), "Sampler_Declaration_States");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Equals); // Option Rule
|
|
if (tok.Type == TokenType.Equals)
|
|
{
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Equals); // Terminal Rule: Equals
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Equals) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Equals.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.SamplerState); // Terminal Rule: SamplerState
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.SamplerState) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.SamplerState.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.OpenBracket); // Terminal Rule: OpenBracket
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.OpenBracket) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.OpenBracket.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Texture, TokenType.MinFilter, TokenType.MagFilter, TokenType.MipFilter, TokenType.Filter, TokenType.AddressU, TokenType.AddressV, TokenType.AddressW, TokenType.BorderColor, TokenType.MaxMipLevel, TokenType.MaxAnisotropy, TokenType.MipLodBias); // ZeroOrMore Rule
|
|
while (tok.Type == TokenType.Texture
|
|
|| tok.Type == TokenType.MinFilter
|
|
|| tok.Type == TokenType.MagFilter
|
|
|| tok.Type == TokenType.MipFilter
|
|
|| tok.Type == TokenType.Filter
|
|
|| tok.Type == TokenType.AddressU
|
|
|| tok.Type == TokenType.AddressV
|
|
|| tok.Type == TokenType.AddressW
|
|
|| tok.Type == TokenType.BorderColor
|
|
|| tok.Type == TokenType.MaxMipLevel
|
|
|| tok.Type == TokenType.MaxAnisotropy
|
|
|| tok.Type == TokenType.MipLodBias)
|
|
{
|
|
ParseSampler_State_Expression(node); // NonTerminal Rule: Sampler_State_Expression
|
|
tok = scanner.LookAhead(TokenType.Texture, TokenType.MinFilter, TokenType.MagFilter, TokenType.MipFilter, TokenType.Filter, TokenType.AddressU, TokenType.AddressV, TokenType.AddressW, TokenType.BorderColor, TokenType.MaxMipLevel, TokenType.MaxAnisotropy, TokenType.MipLodBias); // ZeroOrMore Rule
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.CloseBracket); // Terminal Rule: CloseBracket
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CloseBracket) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CloseBracket.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_Declaration_States
|
|
|
|
private void ParseSampler_Declaration(ParseNode parent) // NonTerminalSymbol: Sampler_Declaration
|
|
{
|
|
Token tok;
|
|
ParseNode n;
|
|
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Sampler_Declaration), "Sampler_Declaration");
|
|
parent.Nodes.Add(node);
|
|
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Sampler); // Terminal Rule: Sampler
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Sampler) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Sampler.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.Scan(TokenType.Identifier); // Terminal Rule: Identifier
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Identifier) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Identifier.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Colon); // ZeroOrMore Rule
|
|
while (tok.Type == TokenType.Colon)
|
|
{
|
|
ParseSampler_Register_Expression(node); // NonTerminal Rule: Sampler_Register_Expression
|
|
tok = scanner.LookAhead(TokenType.Colon); // ZeroOrMore Rule
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Equals, TokenType.OpenBracket); // Option Rule
|
|
if (tok.Type == TokenType.Equals
|
|
|| tok.Type == TokenType.OpenBracket)
|
|
{
|
|
ParseSampler_Declaration_States(node); // NonTerminal Rule: Sampler_Declaration_States
|
|
}
|
|
|
|
// Concat Rule
|
|
tok = scanner.LookAhead(TokenType.Semicolon, TokenType.Comma, TokenType.CloseParenthesis); // Choice Rule
|
|
switch (tok.Type)
|
|
{ // Choice Rule
|
|
case TokenType.Semicolon:
|
|
tok = scanner.Scan(TokenType.Semicolon); // Terminal Rule: Semicolon
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Semicolon) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Semicolon.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
break;
|
|
case TokenType.Comma:
|
|
tok = scanner.Scan(TokenType.Comma); // Terminal Rule: Comma
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.Comma) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.Comma.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
break;
|
|
case TokenType.CloseParenthesis:
|
|
tok = scanner.Scan(TokenType.CloseParenthesis); // Terminal Rule: CloseParenthesis
|
|
n = node.CreateNode(tok, tok.ToString() );
|
|
node.Token.UpdateRange(tok);
|
|
node.Nodes.Add(n);
|
|
if (tok.Type != TokenType.CloseParenthesis) {
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.CloseParenthesis.ToString(), 0x1001, tok));
|
|
return;
|
|
}
|
|
break;
|
|
default:
|
|
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected Semicolon, Comma, or CloseParenthesis.", 0x0002, tok));
|
|
break;
|
|
} // Choice Rule
|
|
|
|
parent.Token.UpdateRange(node.Token);
|
|
} // NonTerminalSymbol: Sampler_Declaration
|
|
|
|
|
|
}
|
|
|
|
#endregion Parser
|
|
}
|