コード例 #1
0
ファイル: Expander.cs プロジェクト: danthomas/Parsing
 private void ExpandIdentifier(Node node)
 {
     if (node.Children.Count == 1 && node.Children[0].TokenType == TokenType.Identifier)
     {
         //identifier -> identifier != null ? attrib
         node.AddChild(TokenType.NotEqualTo);
         Node values = node.AddChild(TokenType.Values);
         values.AddChild(TokenType.Null);
         node.AddChild(TokenType.Question);
         Node expressions = node.AddChild(TokenType.Expressions);
         Node expression = expressions.AddChild(TokenType.Expression);
         expression.AddChild(TokenType.Attrib, node.Children[0].Text);
     }
 }
コード例 #2
0
ファイル: Expander.cs プロジェクト: danthomas/Parsing
        private void ExpandIdentifierEqualToValue(Node node)
        {
            if (node.Children.Count == 3
                && node.Children[0].TokenType == TokenType.Identifier
                && (node.Children[1].TokenType == TokenType.EqualTo || node.Children[1].TokenType == TokenType.NotEqualTo)
                && node.Children[2].TokenType == TokenType.Values)
            {
                //identifier=text -> identifier=text?{identifier}
                node.AddChild(TokenType.Question);

                Node expressions = node.AddChild(TokenType.Expressions);
                Node expression = expressions.AddChild(TokenType.Expression);
                expression.AddChild(TokenType.Attrib, node.Children[0].Text);
            }
        }
コード例 #3
0
ファイル: Parser.cs プロジェクト: danthomas/Parsing
        private Node ConsumeAs(Node node, TokenType expectedTokenType, TokenType asTokenType)
        {
            if (IsTokenType(expectedTokenType))
            {
                var ret = node.AddChild(asTokenType, _currentToken.Text);

                Next();

                return ret;
            }

            throw new Exception("Expected " + expectedTokenType);
        }
コード例 #4
0
ファイル: Parser.cs プロジェクト: danthomas/Parsing
        private Node ConsumeAs(Node node, TokenType tokenType)
        {
            var ret = node.AddChild(tokenType, _currentToken.Text);

            Next();

            return ret;
        }
コード例 #5
0
ファイル: Parser.cs プロジェクト: danthomas/Parsing
 private Node Add(Node parent, TokenType tokenType, string text = "")
 {
     return parent.AddChild(tokenType, text);
 }