Пример #1
0
        internal Lexeme(ScannerInfo scannerInfo, int state, SourceSpan span, string content)
        {
            m_scannerInfo = scannerInfo;
            m_stateIndex = state;
            Value = new LexemeValue(content, span);

            m_trivia = s_emptyTrivia;
        }
Пример #2
0
        internal Lexeme(ScannerInfo scannerInfo, int state, SourceSpan span, string content)
        {
            m_scannerInfo = scannerInfo;
            m_stateIndex  = state;
            Value         = new LexemeValue(content, span);

            m_trivia = s_emptyTrivia;
        }
Пример #3
0
        internal Lexeme(ScannerInfo scannerInfo, int state, SourceSpan span, string content, List <Lexeme> trivia)
        {
            m_scannerInfo = scannerInfo;
            m_stateIndex  = state;
            Value         = new LexemeValue(content, span);

            if (trivia != null)
            {
                m_triviaArray = trivia.ToArray();
                m_trivia      = new ReadOnlyCollection <Lexeme>(m_triviaArray);
            }
            else
            {
                m_triviaArray = null;
                m_trivia      = new ReadOnlyCollection <Lexeme>(s_emptyTrivia);
            }
        }
Пример #4
0
        internal Lexeme(ScannerInfo scannerInfo, int state, SourceSpan span, string content, List<Lexeme> trivia)
        {
            m_scannerInfo = scannerInfo;
            m_stateIndex = state;
            Value = new LexemeValue(content, span);

            if (trivia != null)
            {
                m_triviaArray = trivia.ToArray();
                m_trivia = new ReadOnlyCollection<Lexeme>(m_triviaArray);

            }
            else
            {
                m_triviaArray = null;
                m_trivia = new ReadOnlyCollection<Lexeme>(s_emptyTrivia);
            }
        }
Пример #5
0
 public VariableRef(LexemeValue name)
 {
     VariableName = name;
 }
Пример #6
0
 public MethodRef(LexemeValue name)
 {
     MethodName = name;
 }
Пример #7
0
        private VariableInfo ResolveVariable(LexemeValue identifier)
        {
            //step1, check local parameter & variable definitions
            if (m_currentMethodParameters.Contains(identifier.Content))
            {
                return m_currentMethodParameters[identifier.Content];
            }
            else if (m_currentMethodVariables.Contains(identifier.Content))
            {
                return m_currentMethodVariables[identifier.Content];
            }
            //step2, if not static method, check fields
            if (!m_currentMethod.IsStatic)
            {
                return ResolveField(m_currentType, identifier);
            }

            m_errorManager.AddError(c_SE_VariableDeclMissing, identifier.Span, identifier.Content);
            return null;
        }
Пример #8
0
        private VariableInfo ResolveField(CodeClassType type, LexemeValue identifier)
        {
            //step1, see current class
            if (type.Fields.Contains(identifier.Content))
            {
                return type.Fields[identifier.Content];
            }

            //step2, see base class
            if (m_currentType.BaseType != null)
            {
                return ResolveField(m_currentType.BaseType, identifier);
            }

            m_errorManager.AddError(c_SE_VariableDeclMissing, identifier.Span, identifier.Content);
            return null;
        }
Пример #9
0
 public TypeRef(LexemeValue name)
 {
     TypeName = name;
 }