Exemplo n.º 1
0
        FnText parseFnText()
        {
            FnText textterm = new FnText();

            textterm.TextToken = CurrentToken;
            MoveNext();
            return(textterm);
        }
Exemplo n.º 2
0
        FnName parseFnName()
        {
            FnName fname   = new FnName();
            var    curline = CurrentToken.Line;

            while (CurrentToken.Kind != TokenKind.EOF && curline == CurrentToken.Line)
            {
                if (CurrentKind == TokenKind.LBS)
                {
                    FnBracket arg = parseFnMuArg();
                    if (arg != null)
                    {
                        fname.NameTerms.Add(arg);
                    }
                }
                else if (CurrentKind == TokenKind.Ident)
                {
                    FnText textt = parseFnText();
                    if (textt != null)
                    {
                        fname.NameTerms.Add(textt);
                    }
                }
                else if (CurrentKind == TokenKind.AssignTo)
                {
                    if (fname.NameTerms == null || fname.NameTerms.Count == 0)
                    {
                        error("过程没有名称");
                        MoveNext();
                    }
                    else
                    {
                        MoveNext();
                        if (/*CurrentToken.IsAtomData()||*/ CurrentKind == TokenKind.Ident)
                        {
                            fname.RetToken = CurrentToken;
                            MoveNext();
                        }
                        else
                        {
                            error("错误的过程结果");
                            MoveNext();
                        }
                    }
                }
                else
                {
                    error("错误的过程名称");
                    MoveNext();
                }
            }
            return(fname);
        }