예제 #1
0
파일: Lexeme.cs 프로젝트: destinyclown/VBF
        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
파일: Lexeme.cs 프로젝트: zxs1215/VBF
        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
파일: Lexeme.cs 프로젝트: Crescent2010/VBF
        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
파일: MethodRef.cs 프로젝트: RyuAsuka/VBF
 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
파일: TypeRef.cs 프로젝트: Crescent2010/VBF
 public TypeRef(LexemeValue name)
 {
     TypeName = name;
 }