private BasicAnalyzer( SymbolTreeBuilder symbolTreeBuilder, SymbolForest symbolTrees, ObjectTypeSymbol?stringSymbol, Diagnostics diagnostics) { this.symbolTreeBuilder = symbolTreeBuilder; this.symbolTrees = symbolTrees; this.stringSymbol = stringSymbol; this.diagnostics = diagnostics; }
public PackageSyntax( Name name, FixedSet <ICompilationUnitSyntax> compilationUnits, FixedDictionary <Name, PackageIL> references) { Symbol = new PackageSymbol(name); SymbolTree = new SymbolTreeBuilder(Symbol); CompilationUnits = compilationUnits; AllEntityDeclarations = GetEntityDeclarations(CompilationUnits).ToFixedSet(); References = references; SymbolTrees = new SymbolForest(Primitive.SymbolTree, SymbolTree, ReferencedPackages.Select(p => p.SymbolTree)); Diagnostics = new Diagnostics(CompilationUnits.SelectMany(cu => cu.Diagnostics)); }
private static void BuildIntegerTypeSymbol( SymbolTreeBuilder tree, IntegerType integerType, DataType stringType) { var type = new PrimitiveTypeSymbol(integerType); tree.Add(type); var remainderMethod = new MethodSymbol(type, "remainder", integerType, Params(integerType), integerType); var displayStringMethod = new MethodSymbol(type, "to_display_string", integerType, Params(), stringType); tree.Add(remainderMethod); tree.Add(displayStringMethod); }
private static FixedSymbolTree DefineIntrinsicSymbols() { var intrinsicsPackage = new PackageSymbol("intrinsics"); var tree = new SymbolTreeBuilder(intrinsicsPackage); var intrinsicsNamespace = new NamespaceSymbol(intrinsicsPackage, "intrinsics"); // params: length var memAllocate = new FunctionSymbol(intrinsicsNamespace, "mem_allocate", Params(DataType.Size), DataType.Size); tree.Add(memAllocate); // params: ptr var memDeallocate = new FunctionSymbol(intrinsicsNamespace, "mem_deallocate", Params(DataType.Size)); tree.Add(memDeallocate); // params: from_ptr, to_ptr, length var memCopy = new FunctionSymbol(intrinsicsNamespace, "mem_copy", Params(DataType.Size, DataType.Size, DataType.Size)); tree.Add(memCopy); // params: from_ptr, value var memSetByte = new FunctionSymbol(intrinsicsNamespace, "mem_set_byte", Params(DataType.Size, DataType.Byte)); tree.Add(memSetByte); // params: ptr var memGetByte = new FunctionSymbol(intrinsicsNamespace, "mem_get_byte", Params(DataType.Size), DataType.Byte); tree.Add(memGetByte); // params: ptr, length var printUtf8 = new FunctionSymbol(intrinsicsNamespace, "print_utf8", Params(DataType.Size, DataType.Size)); tree.Add(printUtf8); // params: ptr, length var readUtf8Line = new FunctionSymbol(intrinsicsNamespace, "read_utf8_line", Params(DataType.Size, DataType.Size), DataType.Size); tree.Add(readUtf8Line); return(tree.Build()); }
private static PrimitiveSymbolTree DefinePrimitiveSymbols() { var tree = new SymbolTreeBuilder(); var stringType = new ObjectType(NamespaceName.Global, "String", false, ReferenceCapability.Shared); // Simple Types BuildBoolSymbol(tree); BuildIntegerTypeSymbol(tree, DataType.Byte, stringType); BuildIntegerTypeSymbol(tree, DataType.Int, stringType); BuildIntegerTypeSymbol(tree, DataType.UInt, stringType); BuildIntegerTypeSymbol(tree, DataType.Size, stringType); BuildIntegerTypeSymbol(tree, DataType.Offset, stringType); BuildEmptyType(tree, DataType.Void); BuildEmptyType(tree, DataType.Never); return(tree.BuildPrimitives()); }
private NamespaceSymbolBuilder(SymbolTreeBuilder treeBuilder) { this.treeBuilder = treeBuilder; }
private EntitySymbolBuilder(Diagnostics diagnostics, SymbolTreeBuilder symbolTree) { this.diagnostics = diagnostics; this.symbolTree = symbolTree; }
private static void BuildEmptyType(SymbolTreeBuilder tree, EmptyType emptyType) { var symbol = new PrimitiveTypeSymbol(emptyType); tree.Add(symbol); }
private static void BuildBoolSymbol(SymbolTreeBuilder tree) { var symbol = new PrimitiveTypeSymbol(DataType.Bool); tree.Add(symbol); }