diff --git a/PascalABCNET.axml b/PascalABCNET.axml new file mode 100644 index 000000000..7b2f28db3 --- /dev/null +++ b/PascalABCNET.axml @@ -0,0 +1,529 @@ + + + + + + + + \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 + + + + + + + + + \ No newline at end of file