mirror of
https://github.com/PetroProtsyk/SSharp
synced 2026-06-08 12:11:10 +00:00
93 lines
2.4 KiB
C#
93 lines
2.4 KiB
C#
/*
|
|
* Copyright © 2011, Petro Protsyk, Denys Vuika
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using Scripting.SSharp.Parser.Ast;
|
|
|
|
namespace Scripting.SSharp.Parser
|
|
{
|
|
internal interface IGrammarTerm
|
|
{
|
|
string Name { get; }
|
|
string DisplayName { get; }
|
|
Type NodeType { get; }
|
|
|
|
bool IsSet(TermOptions termOptions);
|
|
}
|
|
|
|
internal interface ITerminal : IGrammarTerm
|
|
{
|
|
string Key { get; }
|
|
TokenCategory Category { get; }
|
|
TokenMatchMode MatchMode { get; }
|
|
int Precedence { get; }
|
|
Associativity Associativity { get; }
|
|
int Priority { get; }
|
|
TokenAst TryMatch(CompilerContext context, ISourceStream source);
|
|
}
|
|
|
|
internal class AstNodeList : List<AstNode> { }
|
|
|
|
internal class StringDictionary : Dictionary<string, string> { }
|
|
internal class CharList : List<char> { }
|
|
internal class TokenList : List<TokenAst> { }
|
|
internal class TerminalList : List<ITerminal> { }
|
|
internal class SyntaxErrorList : List<SyntaxError> { }
|
|
internal class EscapeTable : Dictionary<char, char> { }
|
|
internal class TerminalLookupTable : Dictionary<char, TerminalList> { }
|
|
internal class UnicodeCategoryList : List<UnicodeCategory> { }
|
|
|
|
internal class StringList : List<string>
|
|
{
|
|
public StringList() { }
|
|
|
|
public StringList(params string[] args)
|
|
{
|
|
AddRange(args);
|
|
}
|
|
|
|
public new void AddRange(IEnumerable<string> keys)
|
|
{
|
|
foreach (string key in keys)
|
|
this.Add(key);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return ToString(" ");
|
|
}
|
|
|
|
public string ToString(string separator)
|
|
{
|
|
return String.Join(separator, ToArray());
|
|
}
|
|
|
|
public static int LongerFirst(string x, string y)
|
|
{
|
|
try
|
|
{
|
|
if (x.Length > y.Length) return -1;
|
|
}
|
|
catch { }
|
|
return 0;
|
|
}
|
|
|
|
}
|
|
|
|
}
|