Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
BnfTermExtensions.Helpers.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using Irony.Parsing;
4 
5 namespace SiliconStudio.Shaders.Grammar
6 {
7  /// <summary>
8  /// Extensions to BnfTerm.
9  /// </summary>
10  public static class BnfTermExtensions
11  {
12  /// <summary>
13  /// Makes a non terminal optional.
14  /// </summary>
15  /// <param name="term">The term.</param>
16  /// <returns>An optional non terminal.</returns>
17  public static NonTerminal Opt(this BnfTerm term)
18  {
19  var nonTerminal = term.Q();
20  nonTerminal.SetFlag(TermFlags.NoAstNode);
21  return nonTerminal;
22  }
23 
24  /// <summary>
25  /// Makes a list of non terminals.
26  /// </summary>
27  /// <param name="term">The term.</param>
28  /// <returns>A list of non temrinal</returns>
29  public static NonTerminal List(this BnfTerm term)
30  {
31  var nonTerminal = term.Plus();
32  nonTerminal.SetFlag(TermFlags.NoAstNode);
33  return nonTerminal;
34  }
35 
36  /// <summary>
37  /// Makes an optional list of non terminals.
38  /// </summary>
39  /// <param name="term">The term.</param>
40  /// <returns>An optional list of non terminals.</returns>
41  public static NonTerminal ListOpt(this BnfTerm term)
42  {
43  var nonTerminal = term.Star();
44  nonTerminal.SetFlag(TermFlags.NoAstNode);
45  return nonTerminal;
46  }
47  }
48 }
static NonTerminal ListOpt(this BnfTerm term)
Makes an optional list of non terminals.
static NonTerminal Opt(this BnfTerm term)
Makes a non terminal optional.
static NonTerminal List(this BnfTerm term)
Makes a list of non terminals.