aboutsummaryrefslogtreecommitdiff
path: root/src/Assembly/Pipeline.v
blob: b0cd4018e72bccd05f7e6315a1df1baf4be957af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

Require Import QhasmCommon QhasmEvalCommon.
Require Import Pseudo Qhasm AlmostQhasm Conversion Language.
Require Import PseudoConversion AlmostConversion StringConversion.

Module Pipeline.
  Export Pseudo Util.

  Definition toAlmost (p: Pseudo inVars outVars): option AlmostQhasm.Program :=
    PseudoConversion.convertProgram p.

  Definition toQhasm (p: Pseudo inVars outVars): option Qhasm.Program :=
    omap (toAlmost p) AlmostConversion.convertProgram.

  Definition toString (p: Pseudo inVars outVars): option string :=
    omap (toQhasm p) StringConversion.convertProgram.
End Pipeline.

Module PipelineExample.
  Import Pipeline.

  Program Definition asdf: Program Unary32 := ($0 :+: $0)%p.

  Definition exStr := Pipeline.toString ex.
    | Some x => x
    | None => EmptyString
    end.
  Defined.

Open Scope string_scope.
Print Result.

Extraction "Result.ml" Result.