Beispiel #1
0
    public TokenizerTest()
    {
        InitializeComponent();

        errors            = new List <EchelonScriptErrorMessage> ();
        tokenizer         = new EchelonScriptTokenizer(errors);
        textMarkerService = new TextMarkerService(codeText);
    }
Beispiel #2
0
    public EchelonScriptErrorMessage(ReadOnlySpan <char> srcText, ReadOnlyMemory <char> fileName, ES_AstNodeBounds bounds, string?message = null)
    {
        Message = message;

        StartPos = bounds.StartPos;
        Length   = bounds.EndPos - bounds.StartPos;

        EchelonScriptTokenizer.CalcLine(srcText, StartPos, out var curLine, out var curLineStart);
        FileName = fileName.Span.GetPooledString();
        Line     = curLine;
        Column   = EchelonScriptTokenizer.CalcColumn(srcText, curLineStart, StartPos);
    }
Beispiel #3
0
        public override bool ParseToken(EchelonScriptTokenizer tokenizer, ReadOnlySpan <char> peekedChars, ref EchelonScriptToken retToken)
        {
            var startPos = tokenizer.curPos;

            tokenizer.ReadChars(2);

            if (tokenizer.PeekChar() == NumberSeparator)
            {
                tokenizer.Errors.Add(new EchelonScriptErrorMessage(retToken, ES_FrontendErrors.InvalidHexLiteral));
            }
            else
            {
                tokenizer.ReadStringWhile(c => IsHexDigit(c) || c == NumberSeparator);
            }

            tokenizer.TryReadIntSuffix();

            retToken.Type = EchelonScriptTokenType.HexIntegerLiteral;
            retToken.Text = tokenizer.data [startPos..tokenizer.curPos];
Beispiel #4
0
 public override bool IsStartValid(EchelonScriptTokenizer tokenizer, ReadOnlySpan <char> peekedChars)
 => peekedChars.StartsWith("0x", StringComparison.InvariantCultureIgnoreCase);
Beispiel #5
0
 public abstract bool ParseToken(EchelonScriptTokenizer tokenizer, ReadOnlySpan <char> peekedChars, ref EchelonScriptToken retToken);
Beispiel #6
0
 public abstract bool IsStartValid(EchelonScriptTokenizer tokenizer, ReadOnlySpan <char> peekedChars);