File tree Expand file tree Collapse file tree 3 files changed +67
-4
lines changed Expand file tree Collapse file tree 3 files changed +67
-4
lines changed Original file line number Diff line number Diff line change 1+ module Naggum.Assembler.Assembler
2+
3+ open System.Reflection .Emit
4+
5+ open Naggum.Compiler
6+
7+ /// Prepares the source file for assembling. Returns the intermediate
8+ /// representation of the source code.
9+ let prepare fileName stream =
10+ let forms = Reader.parse fileName stream
11+ ()
12+
13+ /// Assembles the source code. Returns a list of assemblies ready for saving.
14+ let assemble repr : AssemblyBuilder seq =
15+ Seq.empty
Original file line number Diff line number Diff line change 4848 <Reference Include =" System.Numerics" />
4949 </ItemGroup >
5050 <ItemGroup >
51+ <None Include =" App.config" />
5152 <Compile Include =" AssemblyInfo.fs" />
53+ <Compile Include =" Assembler.fs" />
5254 <Compile Include =" Program.fs" />
53- <None Include =" App.config" />
55+ </ItemGroup >
56+ <ItemGroup >
57+ <ProjectReference Include =" ..\Naggum.Compiler\Naggum.Compiler.fsproj" >
58+ <Name >Naggum.Compiler</Name >
59+ <Project >{a4269c5e-e4ac-44bf-a06e-1b45248910ad}</Project >
60+ <Private >True</Private >
61+ </ProjectReference >
5462 </ItemGroup >
5563 <PropertyGroup >
5664 <MinimumVisualStudioVersion Condition =" '$(MinimumVisualStudioVersion)' == ''" >11</MinimumVisualStudioVersion >
Original file line number Diff line number Diff line change 11module Naggum.Assembler.Program
22
3+ open System
4+ open System.IO
35open System.Reflection
6+ open System.Reflection .Emit
7+
8+ type ReturnCode =
9+ | Success = 0
10+ | Error = 1
11+ | InvalidArguments = 2
412
513let printUsage () =
614 let version = Assembly.GetExecutingAssembly() .GetName() .Version
715 printfn " Naggum Assembler %A " version
16+ printfn " Usage: Naggum.Assembler [one or more file names]"
17+
18+ let printError ( error : Exception ) =
19+ printfn " Error: %s " ( error.ToString ())
20+
21+ let save ( assembly : AssemblyBuilder ) =
22+ let name = assembly.FullName
23+ assembly.Save name
24+ printfn " Assembly %s saved" name
25+
26+ let assemble fileName =
27+ use stream = File.OpenRead fileName
28+ let repr = Assembler.prepare fileName stream
29+ let assemblies = Assembler.assemble repr
30+ assemblies |> Seq.iter save
31+
32+ let nga =
33+ function
34+ | [| " --help" |] ->
35+ printUsage ()
36+ ReturnCode.Success
37+ | fileNames when fileNames.Length > 0 ->
38+ try
39+ fileNames |> Array.iter assemble
40+ ReturnCode.Success
41+ with
42+ | error ->
43+ printError error
44+ ReturnCode.Error
45+ | _ ->
46+ printUsage ()
47+ ReturnCode.InvalidArguments
848
949[<EntryPoint>]
10- let main _ =
11- printUsage ()
12- 0
50+ let main args =
51+ let result = nga args
52+ int result
You can’t perform that action at this time.
0 commit comments