\treeconverter\treeconversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.indexer _indexer) public override void visit ( SyntaxTree . indexer _indexer ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs private void indexer_as_expression_index(expression_node expr, SyntaxTree.expression_list parameters, private void indexer_as_expression_index ( expression_node expr , SyntaxTree . expression_list parameters , motivation mot , location loc ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.semantic_expr_node sen) public override void visit ( SyntaxTree . semantic_addr_value sav ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs var fh = (_procedure_definition.proc_header as SyntaxTree.function_header); public override void visit ( SyntaxTree . procedure_definition _procedure_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.assign_tuple _modern_proc_type) public override void visit ( SyntaxTree . assign_tuple asstup ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs if (t.FullName.StartsWith("System.Tuple")) private void indexer_as_expression_index ( expression_node expr , SyntaxTree . expression_list parameters , motivation mot , location loc ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.enum_type_definition _enum_type_definition) public override void visit ( SyntaxTree . enum_type_definition _enum_type_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs if (!is_enum) public override void visit ( SyntaxTree . enum_type_definition _enum_type_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.modern_proc_type _modern_proc_type) public override void visit ( SyntaxTree . modern_proc_type _modern_proc_type ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\symboltable\dsst\symboltable.cs int tn=HashTable.Find(Name); //найдем имя в хеше private SymbolInfo FindAll ( Scope scope , string Name , bool OnlyInType , bool OnlyInThisClass , Scope FromScope ) public class DSSymbolTable namespace SymbolTable \TreeConverter\TreeConversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.modern_proc_type _modern_proc_type) public override void visit ( SyntaxTree . modern_proc_type _modern_proc_type ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.foreach_stmt _foreach_stmt) public override void visit ( SyntaxTree . foreach_stmt _foreach_stmt ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs public bool FindIEnumerableElementType(SyntaxTree.foreach_stmt _foreach_stmt, type_node tn, ref type_node elem_type) public bool FindIEnumerableElementType ( SyntaxTree . foreach_stmt _foreach_stmt , type_node tn , ref type_node elem_type ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\lambdaexpressions\lambdaresulttypeinferrer.cs private type_node GetMostCommonType(int kind = 0) private type_node GetMostCommonType ( int kind = 0 ) internal class LambdaResultTypeInferrer : WalkingVisitorNew namespace TreeConverter . LambdaExpressions \treeconverter\treeconversion\syntax_tree_visitor.cs // SSM 20.07.13 если это - узел с коротким определением функции без типа возвращаемого значения, то вывести этот тип public override void visit ( SyntaxTree . procedure_definition _procedure_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \SyntaxTree\tree\TreeHelper.cs public object RealSemTypeOfResExpr = null; // Result := ex; - семантический тип ex - нужно для лучщего выбора среди перегруженных методов с параметрами-лямбдами public object RealSemTypeOfResExpr = null public partial class function_lambda_definition namespace PascalABCCompiler . SyntaxTree \codecompletion\expressionvisitor.cs public override void visit ( assign _assign ) public class ExpressionVisitor : PascalABCCompiler . SyntaxTree . AbstractVisitor namespace CodeCompletion \treeconverter\treeconversion\lambdahelper.cs public class ResultNodesSearcher : SyntaxTree.WalkingVisitorNew public class ResultNodesSearcher : SyntaxTree . WalkingVisitorNew public class LambdaHelper namespace PascalABCCompiler . TreeConverter public List < expression > exprList = new List < expression > ( ) public ResultNodesSearcher ( syntax_tree_node root ) public override void visit ( assign value ) \TreeConverter\LambdaExpressions\LambdaResultTypeInferrer.cs internal class LambdaResultTypeInferrer : WalkingVisitorNew internal class LambdaResultTypeInferrer : WalkingVisitorNew namespace TreeConverter . LambdaExpressions private const string RESULT_KEY_WORD = private readonly List < Tuple < type_node , expression , expression_node > > resultExpressionsTypes private readonly syntax_tree_visitor syntaxTreeVisitor private readonly proc_block lambdaBody private readonly function_header lambdaHeader public LambdaResultTypeInferrer ( function_header lambdaHeader , proc_block lambdaBody , syntax_tree_visitor syntaxTreeVisitor ) private type_node GetMostCommonType ( ) public type_node InferResultType ( ) public override void visit ( statement_list stmtList ) public override void visit ( var_def_statement varStmt ) \treeconverter\treeconversion\lambdahelper.cs retType.real_type = new LambdaResultTypeInferrer(funcHeader, procBody, visitor).InferResultType(); public static void InferResultType ( function_header funcHeader , proc_block procBody , syntax_tree_visitor visitor ) public class LambdaHelper namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs visit_lambda_header(_procedure_definition.proc_header as SyntaxTree.function_header, _procedure_definition.proc_body); public override void visit ( SyntaxTree . procedure_definition _procedure_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs hard_node_test_and_visit(_procedure_definition.proc_body); public override void visit ( SyntaxTree . procedure_definition _procedure_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs hard_node_test_and_visit(_procedure_definition.proc_header); public override void visit ( SyntaxTree . procedure_definition _procedure_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs if (context.top_function.return_value_type == null) public override void visit ( SyntaxTree . function_header _function_header ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs if (context.top_function.return_value_type == null) public override void visit ( SyntaxTree . function_header _function_header ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.question_colon_expression node) public override void visit ( SyntaxTree . question_colon_expression node ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs private void dot_node_as_expression_dot_ident(expression_node en, SyntaxTree.ident id_right, motivation mot, addressed_value syntax_node) private void dot_node_as_expression_dot_ident ( expression_node en , SyntaxTree . ident id_right , motivation mot , addressed_value syntax_node ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.indexer _indexer) public override void visit ( SyntaxTree . indexer _indexer ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \parsers\pascalabcparsernewsaushkin\semanticrules.cs public expression NewVariable(addressed_value variable, expression var_specifiers, LexLocation loc) public expression NewVariable ( addressed_value variable , expression var_specifiers , LexLocation loc ) public partial class GPPGParser namespace GPPGParserScanner \treeconverter\treeconversion\convertion_data_and_alghoritms.cs public function_node select_function(expressions_list parameters, SymbolInfo functions, location loc, List<SyntaxTree.expression> syntax_nodes_parameters = null) public function_node select_function ( expressions_list parameters , SymbolInfo functions , location loc , List < SyntaxTree . expression > syntax_nodes_parameters = null ) public class convertion_data_and_alghoritms namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs internal void visit_method_call(SyntaxTree.method_call _method_call) internal void visit_method_call ( SyntaxTree . method_call _method_call ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\convertion_data_and_alghoritms.cs function_node inst = generic_convertions.DeduceFunction(func, parameters, public function_node select_function ( expressions_list parameters , SymbolInfo functions , location loc , List < SyntaxTree . expression > syntax_nodes_parameters = null ) public class convertion_data_and_alghoritms namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.procedure_definition _procedure_definition) public override void visit ( SyntaxTree . procedure_definition _procedure_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs if (ttt is undefined_type) public override void visit ( SyntaxTree . procedure_definition _procedure_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs // SSM 12/04/16 - short func definitions - calc return_value_type public override void visit ( SyntaxTree . procedure_definition _procedure_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs public override void visit ( SyntaxTree . function_lambda_definition _function_lambda_definition ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\LambdaHelper.cs public static void InferTypesFromVarStmt(type_node leftType, function_lambda_definition lambdaDef, syntax_tree_visitor visitor) public static void InferTypesFromVarStmt ( type_node leftType , function_lambda_definition lambdaDef , syntax_tree_visitor visitor ) public class LambdaHelper namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.assign _assign) public override void visit ( SyntaxTree . assign _assign ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \Compiler\Compiler.cs CurrentUnit.SyntaxTree = syntaxTreeConvertersController.Convert(CurrentUnit.SyntaxTree) as SyntaxTree.compilation_unit; public CompilationUnit CompileUnit ( PascalABCCompiler . TreeRealization . unit_node_list Units , SyntaxTree . unit_or_namespace SyntaxUsesUnit ) public class Compiler : MarshalByRefObject , ICompiler namespace PascalABCCompiler \Compiler\SemanticTreeConverters\SemanticTreeConvertersController.cs public class SemanticTreeConvertersController public class SemanticTreeConvertersController namespace PascalABCCompiler . SemanticTreeConverters public enum State ICompiler Compiler private List < ISemanticTreeConverter > semanticTreeConverters = new List < ISemanticTreeConverter > ( ) public List < ISemanticTreeConverter > SemanticTreeConverters public delegate void ChangeStateDelegate ( State State , ISemanticTreeConverter SemanticTreeConverter ) public event ChangeStateDelegate ChangeState public SemanticTreeConvertersController ( ICompiler Compiler ) public void AddConverters ( ) private void AddConverters ( string DirectoryName ) public SemanticTree . IProgramNode Convert ( SemanticTree . IProgramNode ProgramNode ) \Compiler\Compiler.cs public SyntaxTreeConvertersController SyntaxTreeConvertersController public SyntaxTreeConvertersController SyntaxTreeConvertersController public class Compiler : MarshalByRefObject , ICompiler namespace PascalABCCompiler \codecompletion\domconverter.cs if (pattern != null || pattern != "") public SymInfo [ ] GetTypeByPattern ( string pattern , int line , int col , bool all_names , int nest_level ) public class DomConverter namespace CodeCompletion \visualplugins\languageconverter\source\textformatter.cs _word.Replace(specSymbol, ""); public string FormatWordWithKeyWord ( string _word , object _node ) public class TextFormatter namespace Converter \visualpascalabcnet\formsdesignerbinding\dependecies\src\main\base\project\src\services\refactoringservice\refactoringservice.cs result.OrderBy(node => node.Content.FullyQualifiedName); static IEnumerable < ITreeNode < IClass > > FindDerivedClassesTree ( IClass baseClass , IEnumerable < IProjectContent > projectContents , HashSet < IClass > seenClasses ) public static class RefactoringService namespace ICSharpCode . SharpDevelop . Refactoring \treeconverter\treeconversion\syntax_tree_visitor.cs if (_pascal_set_constant.values != null && _pascal_set_constant.values != null) public override void visit ( SyntaxTree . pascal_set_constant _pascal_set_constant ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \visualpascalabcnet\workbench\runnermanagerhandlers.cs if (File.Exists(pdbFileName) && File.Exists(pdbFileName)) void WaitCallback_DeleteEXEAndPDB ( object state ) public partial class WorkbenchRunService : VisualPascalABCPlugins . IWorkbenchRunService namespace VisualPascalABC \visualpascalabcnet\formsdesignerbinding\dependecies\src\main\base\project\src\editor\codecompletion\nrefactoryinsightwindowhandler.cs Вот здесь то место, где не учитывается один вариант открывающих скобок Вместо одного из openBracketToken нужно написать openBracesToken if (token.Kind == openParensToken || token.Kind == openBracketToken || token.Kind == openBracketToken) { public void InitializeOpenedInsightWindow ( ITextEditor editor , IInsightWindow insightWindow ) public class NRefactoryInsightWindowHandler : IInsightWindowHandler namespace ICSharpCode . SharpDevelop . Editor . CodeCompletion \treeconverter\systemlib\static_executors.cs if (value >= int.MinValue && value <= int.MaxValue) private static int check_int_overflow ( location loc , int value ) public static class static_executors namespace PascalABCCompiler . SystemLibrary \treeconverter\systemlib\static_executors.cs if (value >= long.MinValue && value <= long.MaxValue) private static long check_long_overflow ( location loc , long value ) public static class static_executors namespace PascalABCCompiler . SystemLibrary \NETGenerator\NETGenerator.cs if (pos <= 255) il.Emit(OpCodes.Starg_S, pos); private void ConvertInc ( IExpressionNode e ) public class ILConverter : AbstractVisitor namespace PascalABCCompiler . NETGenerator \NETGenerator\NETGenerator.cs if (pos <= 255) il.Emit(OpCodes.Starg_S, pos); private void ConvertDec ( IExpressionNode e ) public class ILConverter : AbstractVisitor namespace PascalABCCompiler . NETGenerator \NETGenerator\NETGenerator.cs if (pos <= 255) il.Emit(OpCodes.Ldarga_S, pos); private void AddrOfParameterNode ( ICommonParameterReferenceNode value ) public class ILConverter : AbstractVisitor namespace PascalABCCompiler . NETGenerator \codecompletion\findreferences.cs Двумя строчками ниже (Здесь сказывается недостаток моего инструмента - если в методе есть две одинаковые строчки - переход осуществляется только на первую, а надо на вторую) if (ret_tn != null) public override void visit ( indexer _indexer ) public class ReferenceFinder : AbstractVisitor namespace CodeCompletion \parsertools\syntaxtreevisitors\syntaxtreecomparer.cs 597 и 631 строки в текущей версии else if (left is int64_const) public void CompareInternal ( expression left , expression right ) public class SyntaxTreeComparer namespace PascalABCCompiler . SyntaxTree \parsertools\syntaxtreevisitors\syntaxtreecomparer.cs 1599 1611 1615 строки else if (left is case_node) public void CompareInternal ( statement left , statement right ) public class SyntaxTreeComparer namespace PascalABCCompiler . SyntaxTree \TreeConverter\TreeConversion\syntax_tree_visitor.cs expression_node bfcint = make_read_call(si, _method_call.parameters, subloc2); internal void visit_method_call ( SyntaxTree . method_call _method_call ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs Это - непонятное место из-за которого происходит ошибка readln_string_file = true; private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs if (!readln_string_file) private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \TreeConverter\TreeConversion\syntax_tree_visitor.cs string Consts__Self = YieldHelpers.YieldConsts.Self; private bool CheckUnknownIdentNeedsClassCapture ( SyntaxTree . yield_unknown_ident _unk ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \yield\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs function_header nfh = ObjectCopier.Clone(fh); type_declarations GenClassesForYield ( procedure_definition pd , IEnumerable < var_def_statement > fields , IDictionary < string , string > localsMap , IDictionary < string , string > formalParamsMap , IDictionary < var_def_statement , var_def_statement > localsCloneMap , yield_locals_type_map_helper localTypeMapHelper ) public class ProcessYieldCapturedVarsVisitor : BaseChangeVisitor namespace SyntaxVisitors \treeconverter\treeconversion\syntax_tree_visitor.cs visit_program_code(_block.program_code); public override void visit ( SyntaxTree . block _block ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter \treeconverter\treeconversion\syntax_tree_visitor.cs if (lab.is_defined) public override void visit ( SyntaxTree . labeled_statement _labeled_statement ) public class syntax_tree_visitor : SyntaxTree . AbstractVisitor namespace PascalABCCompiler . TreeConverter