Advertisement
Guest User

Substring (wydziel)

a guest
May 25th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Irony.Parsing;
  5.  
  6. namespace Irony.Samples.Strings
  7. {
  8. [Language("Strings", "1.0", "Strings 1.0 Grammar")]
  9. public class StringsGrammar : Irony.Parsing.Grammar
  10. {
  11. public StringsGrammar()
  12. {
  13. var napisCudzyslow = new StringLiteral("stringCudzyslow", "'", StringOptions.AllowsDoubledQuote);
  14. var napis = new RegexBasedTerminal("napis", @"\w+");
  15. var integer = new RegexBasedTerminal("integer", "[0-9]+");
  16. var obiekt = new RegexBasedTerminal("obiekt", @"^[a-zA-Z]\w+");
  17.  
  18. var plus = ToTerm("+");
  19. var porownaj = ToTerm("porownaj");
  20. var wydziel = ToTerm("wydziel");
  21. var koniec = ToTerm(";");
  22.  
  23. NonTerminal n = new NonTerminal("napis");
  24.  
  25. NonTerminal funkcjaPorownaj = new NonTerminal("funkcjaPorownaj");
  26.  
  27. NonTerminal funkcjaWydziel = new NonTerminal("funkcjaWydziel");
  28.  
  29.  
  30.  
  31. funkcjaPorownaj.Rule = porownaj + "(" + n + "," + n + ")" + ";";
  32.  
  33. funkcjaWydziel.Rule = obiekt + "." + wydziel + "(" + integer + "," + integer + ")" + ";" | obiekt + "." + wydziel + "(" + integer + ")" + ";";
  34.  
  35. n.Rule = napisCudzyslow | napis;
  36. this.Root = funkcjaWydziel;
  37.  
  38. }
  39. }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement