|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Diggins.Jigsaw
{
public class SExpressionGrammar : SharedGrammar
{
new public static Rule Integer = Node(SharedGrammar.Integer);
new public static Rule Float = Node(SharedGrammar.Float);
public static Rule Term = Node(Recursive(() => (Atom | SExpr)));
public static Rule Terms = Node(ZeroOrMore(Term + WS));
public static Rule FirstSymbolChar = Letter | CharSet(@"~@#$%^&*-_=+:<>,./\");
public static Rule NextSymbolChar = FirstSymbolChar | Digit;
public static Rule Symbol = Node(FirstSymbolChar + ZeroOrMore(NextSymbolChar));
public static Rule String = Node(MatchChar('"') + AdvanceWhileNot(MatchChar('"')) + MatchChar('"'));
public static Rule Atom = Node(Integer | Float | String | Symbol);
public static Rule SExpr = Node(CharToken('(') + Terms + CharToken(')'));
static SExpressionGrammar() { InitGrammar(typeof(SExpressionGrammar)); }
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.