コード例 #1
0
 private void AssertNextTokenKind(StepTokenKind kind)
 {
     AssertTokensRemain();
     if (Current.Kind != kind)
     {
         ReportError($"Expected '{kind}' token but found '{Current.Kind}'");
     }
 }
コード例 #2
0
ファイル: StepParser.cs プロジェクト: ghord/SharpExpress
        private bool Accept(StepTokenKind kind, string text = null)
        {
            if (enumerator_.TryPeek(out var token) && token.Kind == kind)
            {
                if (text == null || token.StringBuilder.Equals(text))
                {
                    enumerator_.MoveNext();
                    return(true);
                }
            }

            return(false);
        }
コード例 #3
0
ファイル: StepParser.cs プロジェクト: ghord/SharpExpress
        private void Expect(StepTokenKind kind, string text = null)
        {
            if (enumerator_.TryPeek(out var token))
            {
                if (token.Kind == kind)
                {
                    if (text == null || token.StringBuilder.Equals(text))
                    {
                        enumerator_.MoveNext();
                        return;
                    }
                }

                throw new UnexpectedTokenException($"Expected token {kind}({text}), found {token.Kind}({token})");
            }

            throw new UnexpectedTokenException($"Expected token {kind}({text}), found end of file");
        }
コード例 #4
0
 private TokenVerifier WithKind(StepTokenKind kind)
 {
     return(token => token.Kind == kind);
 }
コード例 #5
0
 private void SwallowToken(StepTokenKind kind)
 {
     AssertNextTokenKind(kind);
     MoveNext();
 }
コード例 #6
0
 private StepToken(StepTokenKind kind)
 {
     Kind          = kind;
     StringBuilder = null;
 }
コード例 #7
0
 public StepToken(StepTokenKind kind, FastStringBuilder value)
 {
     Kind          = kind;
     StringBuilder = value;
 }