Skip to content

Commit 4ee6e82

Browse files
committed
Rename gate ctrl terms. More work on typechecker.
1 parent ea21ee5 commit 4ee6e82

File tree

19 files changed

+269
-114
lines changed

19 files changed

+269
-114
lines changed

src/Frontend/ASTtoIASTConverter.hs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ module Frontend.ASTtoIASTConverter (
1919
simplifyTensorProd,
2020
Term(..),
2121
Type(..),
22+
List(..),
23+
CaseExpression(..),
2224
) where
2325

2426
import qualified Frontend.LambdaQ.Abs as GeneratedAbstractSyntax
@@ -168,8 +170,8 @@ data Term =
168170
TermCase Term [CaseExpression] |
169171
TermLambda Type Term |
170172
TermGate Gate |
171-
TermQuantumControlGate [Term] [BasisState] |
172-
TermClassicControlGate [Term] [Bit] |
173+
TermGateQuantumControl [Term] [BasisState] |
174+
TermGateClassicControl [Term] [Bit] |
173175
TermApply Term Term |
174176
TermDollar Term Term |
175177
TermCompose Term Term |
@@ -448,29 +450,29 @@ mapTerm env (GeneratedAbstractSyntax.TermIfElse cond t f) = TermIfElse (mapTerm
448450
mapTerm env (GeneratedAbstractSyntax.TermTensorProduct t1 t2) = TermTensorProduct (mapTerm env t1) (mapTerm env t2)
449451
mapTerm env (GeneratedAbstractSyntax.TermCase t exprs) = TermCase (mapTerm env t) (map (mapCaseExpression env) exprs)
450452

451-
mapTerm env (GeneratedAbstractSyntax.TermQuantumCtrlGate (GeneratedAbstractSyntax.CtrlTerm term) (GeneratedAbstractSyntax.CtrlBasisState bst))
452-
= TermQuantumControlGate [mapTerm env term] [mapBasisState bst]
453+
mapTerm env (GeneratedAbstractSyntax.TermGateQuantumCtrl (GeneratedAbstractSyntax.CtrlTerm term) (GeneratedAbstractSyntax.CtrlBasisState bst))
454+
= TermGateQuantumControl [mapTerm env term] [mapBasisState bst]
453455

454-
mapTerm env (GeneratedAbstractSyntax.TermQuantumTCtrlsGate termList bsList)
455-
= TermQuantumControlGate (mapTerm env term : map (mapTerm env) terms) (mapBasisState bst : map mapBasisState bsts)
456+
mapTerm env (GeneratedAbstractSyntax.TermGateQuantumTCtrls termList bsList)
457+
= TermGateQuantumControl (mapTerm env term : map (mapTerm env) terms) (mapBasisState bst : map mapBasisState bsts)
456458
where
457459
(GeneratedAbstractSyntax.CtrlTerms term terms) = termList
458460
(GeneratedAbstractSyntax.CtrlBasisStates bst bsts) = bsList
459461

460-
mapTerm env (GeneratedAbstractSyntax.TermQuantumVCtrlsGate varList bsList)
461-
= TermQuantumControlGate (mapTerm env (GeneratedAbstractSyntax.TermVariable var) : map (mapTerm env . GeneratedAbstractSyntax.TermVariable) vars) (mapBasisState bst : map mapBasisState bsts)
462+
mapTerm env (GeneratedAbstractSyntax.TermGateQuantumVCtrls varList bsList)
463+
= TermGateQuantumControl (mapTerm env (GeneratedAbstractSyntax.TermVariable var) : map (mapTerm env . GeneratedAbstractSyntax.TermVariable) vars) (mapBasisState bst : map mapBasisState bsts)
462464
where
463465
(GeneratedAbstractSyntax.CtrlVars var vars) = varList
464466
(GeneratedAbstractSyntax.CtrlBasisStates bst bsts) = bsList
465467

466-
mapTerm env (GeneratedAbstractSyntax.TermClassicCtrlGate (GeneratedAbstractSyntax.CtrlTerm term) (GeneratedAbstractSyntax.CtrlBit bit))
467-
= TermClassicControlGate [mapTerm env term] [mapControlBit bit]
468+
mapTerm env (GeneratedAbstractSyntax.TermGateClassicCtrl (GeneratedAbstractSyntax.CtrlTerm term) (GeneratedAbstractSyntax.CtrlBit bit))
469+
= TermGateClassicControl [mapTerm env term] [mapControlBit bit]
468470

469-
mapTerm env (GeneratedAbstractSyntax.TermClassicTCtrlsGate (GeneratedAbstractSyntax.CtrlTerms term terms) (GeneratedAbstractSyntax.CtrlBits bit bits))
470-
= TermClassicControlGate (mapTerm env term : map (mapTerm env) terms) (mapControlBit bit : map mapControlBit bits)
471+
mapTerm env (GeneratedAbstractSyntax.TermGateClassicTCtrls (GeneratedAbstractSyntax.CtrlTerms term terms) (GeneratedAbstractSyntax.CtrlBits bit bits))
472+
= TermGateClassicControl (mapTerm env term : map (mapTerm env) terms) (mapControlBit bit : map mapControlBit bits)
471473

472-
mapTerm env (GeneratedAbstractSyntax.TermClassicVCtrlsGate (GeneratedAbstractSyntax.CtrlVars var vars) (GeneratedAbstractSyntax.CtrlBits bit bits))
473-
= TermClassicControlGate (mapTerm env (GeneratedAbstractSyntax.TermVariable var) : map (mapTerm env . GeneratedAbstractSyntax.TermVariable) vars) (mapControlBit bit : map mapControlBit bits)
474+
mapTerm env (GeneratedAbstractSyntax.TermGateClassicVCtrls (GeneratedAbstractSyntax.CtrlVars var vars) (GeneratedAbstractSyntax.CtrlBits bit bits))
475+
= TermGateClassicControl (mapTerm env (GeneratedAbstractSyntax.TermVariable var) : map (mapTerm env . GeneratedAbstractSyntax.TermVariable) vars) (mapControlBit bit : map mapControlBit bits)
474476

475477
mapTerm env (GeneratedAbstractSyntax.TermLetSingle var term1 term2) = TermLet (mapTerm env term1) (mapTerm env' term2)
476478
where

src/Frontend/LambdaQ/Abs.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,12 @@ data Term
159159
| TermList List
160160
| TermVariable Var
161161
| TermTuple Term [Term]
162-
| TermQuantumCtrlGate ControlTerm ControlBasisState
163-
| TermQuantumTCtrlsGate ControlTerms ControlBasisStates
164-
| TermQuantumVCtrlsGate ControlVars ControlBasisStates
165-
| TermClassicCtrlGate ControlTerm ControlBit
166-
| TermClassicTCtrlsGate ControlTerms ControlBits
167-
| TermClassicVCtrlsGate ControlVars ControlBits
162+
| TermGateQuantumCtrl ControlTerm ControlBasisState
163+
| TermGateQuantumTCtrls ControlTerms ControlBasisStates
164+
| TermGateQuantumVCtrls ControlVars ControlBasisStates
165+
| TermGateClassicCtrl ControlTerm ControlBit
166+
| TermGateClassicTCtrls ControlTerms ControlBits
167+
| TermGateClassicVCtrls ControlVars ControlBits
168168
| TermApply Term Term
169169
| TermCompose Term Term
170170
| TermTensorProduct Term Term

src/Frontend/LambdaQ/Par.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1843,7 +1843,7 @@ happyReduction_140 (happy_x_4 `HappyStk`
18431843
= case happyOut36 happy_x_2 of { (HappyWrap36 happy_var_2) ->
18441844
case happyOut30 happy_x_4 of { (HappyWrap30 happy_var_4) ->
18451845
happyIn43
1846-
(Frontend.LambdaQ.Abs.TermQuantumCtrlGate happy_var_2 happy_var_4
1846+
(Frontend.LambdaQ.Abs.TermGateQuantumCtrl happy_var_2 happy_var_4
18471847
) `HappyStk` happyRest}}
18481848

18491849
happyReduce_141 = happyReduce 4# 39# happyReduction_141
@@ -1855,7 +1855,7 @@ happyReduction_141 (happy_x_4 `HappyStk`
18551855
= case happyOut37 happy_x_2 of { (HappyWrap37 happy_var_2) ->
18561856
case happyOut31 happy_x_4 of { (HappyWrap31 happy_var_4) ->
18571857
happyIn43
1858-
(Frontend.LambdaQ.Abs.TermQuantumTCtrlsGate happy_var_2 happy_var_4
1858+
(Frontend.LambdaQ.Abs.TermGateQuantumTCtrls happy_var_2 happy_var_4
18591859
) `HappyStk` happyRest}}
18601860

18611861
happyReduce_142 = happyReduce 4# 39# happyReduction_142
@@ -1867,7 +1867,7 @@ happyReduction_142 (happy_x_4 `HappyStk`
18671867
= case happyOut39 happy_x_2 of { (HappyWrap39 happy_var_2) ->
18681868
case happyOut31 happy_x_4 of { (HappyWrap31 happy_var_4) ->
18691869
happyIn43
1870-
(Frontend.LambdaQ.Abs.TermQuantumVCtrlsGate happy_var_2 happy_var_4
1870+
(Frontend.LambdaQ.Abs.TermGateQuantumVCtrls happy_var_2 happy_var_4
18711871
) `HappyStk` happyRest}}
18721872

18731873
happyReduce_143 = happyReduce 4# 39# happyReduction_143
@@ -1879,7 +1879,7 @@ happyReduction_143 (happy_x_4 `HappyStk`
18791879
= case happyOut36 happy_x_2 of { (HappyWrap36 happy_var_2) ->
18801880
case happyOut33 happy_x_4 of { (HappyWrap33 happy_var_4) ->
18811881
happyIn43
1882-
(Frontend.LambdaQ.Abs.TermClassicCtrlGate happy_var_2 happy_var_4
1882+
(Frontend.LambdaQ.Abs.TermGateClassicCtrl happy_var_2 happy_var_4
18831883
) `HappyStk` happyRest}}
18841884

18851885
happyReduce_144 = happyReduce 4# 39# happyReduction_144
@@ -1891,7 +1891,7 @@ happyReduction_144 (happy_x_4 `HappyStk`
18911891
= case happyOut37 happy_x_2 of { (HappyWrap37 happy_var_2) ->
18921892
case happyOut34 happy_x_4 of { (HappyWrap34 happy_var_4) ->
18931893
happyIn43
1894-
(Frontend.LambdaQ.Abs.TermClassicTCtrlsGate happy_var_2 happy_var_4
1894+
(Frontend.LambdaQ.Abs.TermGateClassicTCtrls happy_var_2 happy_var_4
18951895
) `HappyStk` happyRest}}
18961896

18971897
happyReduce_145 = happyReduce 4# 39# happyReduction_145
@@ -1903,7 +1903,7 @@ happyReduction_145 (happy_x_4 `HappyStk`
19031903
= case happyOut39 happy_x_2 of { (HappyWrap39 happy_var_2) ->
19041904
case happyOut34 happy_x_4 of { (HappyWrap34 happy_var_4) ->
19051905
happyIn43
1906-
(Frontend.LambdaQ.Abs.TermClassicVCtrlsGate happy_var_2 happy_var_4
1906+
(Frontend.LambdaQ.Abs.TermGateClassicVCtrls happy_var_2 happy_var_4
19071907
) `HappyStk` happyRest}}
19081908

19091909
happyReduce_146 = happySpecReduce_2 39# happyReduction_146

src/Frontend/LambdaQ/Par.y

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -363,12 +363,12 @@ Term3
363363

364364
Term2 :: { Frontend.LambdaQ.Abs.Term }
365365
Term2
366-
: 'with' ControlTerm 'ctrl' ControlBasisState { Frontend.LambdaQ.Abs.TermQuantumCtrlGate $2 $4 }
367-
| 'with' ControlTerms 'ctrl' ControlBasisStates { Frontend.LambdaQ.Abs.TermQuantumTCtrlsGate $2 $4 }
368-
| 'with' ControlVars 'ctrl' ControlBasisStates { Frontend.LambdaQ.Abs.TermQuantumVCtrlsGate $2 $4 }
369-
| 'with' ControlTerm 'ctrl' ControlBit { Frontend.LambdaQ.Abs.TermClassicCtrlGate $2 $4 }
370-
| 'with' ControlTerms 'ctrl' ControlBits { Frontend.LambdaQ.Abs.TermClassicTCtrlsGate $2 $4 }
371-
| 'with' ControlVars 'ctrl' ControlBits { Frontend.LambdaQ.Abs.TermClassicVCtrlsGate $2 $4 }
366+
: 'with' ControlTerm 'ctrl' ControlBasisState { Frontend.LambdaQ.Abs.TermGateQuantumCtrl $2 $4 }
367+
| 'with' ControlTerms 'ctrl' ControlBasisStates { Frontend.LambdaQ.Abs.TermGateQuantumTCtrls $2 $4 }
368+
| 'with' ControlVars 'ctrl' ControlBasisStates { Frontend.LambdaQ.Abs.TermGateQuantumVCtrls $2 $4 }
369+
| 'with' ControlTerm 'ctrl' ControlBit { Frontend.LambdaQ.Abs.TermGateClassicCtrl $2 $4 }
370+
| 'with' ControlTerms 'ctrl' ControlBits { Frontend.LambdaQ.Abs.TermGateClassicTCtrls $2 $4 }
371+
| 'with' ControlVars 'ctrl' ControlBits { Frontend.LambdaQ.Abs.TermGateClassicVCtrls $2 $4 }
372372
| Term2 Term3 { Frontend.LambdaQ.Abs.TermApply $1 $2 }
373373
| Term2 '.' Term3 { Frontend.LambdaQ.Abs.TermCompose $1 $3 }
374374
| Term2 '*' Term3 { Frontend.LambdaQ.Abs.TermTensorProduct $1 $3 }

src/Frontend/LambdaQ/Print.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -328,12 +328,12 @@ instance Print Frontend.LambdaQ.Abs.Term where
328328
Frontend.LambdaQ.Abs.TermList list -> prPrec i 3 (concatD [prt 0 list])
329329
Frontend.LambdaQ.Abs.TermVariable var -> prPrec i 3 (concatD [prt 0 var])
330330
Frontend.LambdaQ.Abs.TermTuple term terms -> prPrec i 3 (concatD [doc (showString "("), prt 0 term, doc (showString ","), prt 0 terms, doc (showString ")")])
331-
Frontend.LambdaQ.Abs.TermQuantumCtrlGate controlterm controlbasisstate -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlterm, doc (showString "ctrl"), prt 0 controlbasisstate])
332-
Frontend.LambdaQ.Abs.TermQuantumTCtrlsGate controlterms controlbasisstates -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlterms, doc (showString "ctrl"), prt 0 controlbasisstates])
333-
Frontend.LambdaQ.Abs.TermQuantumVCtrlsGate controlvars controlbasisstates -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlvars, doc (showString "ctrl"), prt 0 controlbasisstates])
334-
Frontend.LambdaQ.Abs.TermClassicCtrlGate controlterm controlbit -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlterm, doc (showString "ctrl"), prt 0 controlbit])
335-
Frontend.LambdaQ.Abs.TermClassicTCtrlsGate controlterms controlbits -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlterms, doc (showString "ctrl"), prt 0 controlbits])
336-
Frontend.LambdaQ.Abs.TermClassicVCtrlsGate controlvars controlbits -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlvars, doc (showString "ctrl"), prt 0 controlbits])
331+
Frontend.LambdaQ.Abs.TermGateQuantumCtrl controlterm controlbasisstate -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlterm, doc (showString "ctrl"), prt 0 controlbasisstate])
332+
Frontend.LambdaQ.Abs.TermGateQuantumTCtrls controlterms controlbasisstates -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlterms, doc (showString "ctrl"), prt 0 controlbasisstates])
333+
Frontend.LambdaQ.Abs.TermGateQuantumVCtrls controlvars controlbasisstates -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlvars, doc (showString "ctrl"), prt 0 controlbasisstates])
334+
Frontend.LambdaQ.Abs.TermGateClassicCtrl controlterm controlbit -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlterm, doc (showString "ctrl"), prt 0 controlbit])
335+
Frontend.LambdaQ.Abs.TermGateClassicTCtrls controlterms controlbits -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlterms, doc (showString "ctrl"), prt 0 controlbits])
336+
Frontend.LambdaQ.Abs.TermGateClassicVCtrls controlvars controlbits -> prPrec i 2 (concatD [doc (showString "with"), prt 0 controlvars, doc (showString "ctrl"), prt 0 controlbits])
337337
Frontend.LambdaQ.Abs.TermApply term1 term2 -> prPrec i 2 (concatD [prt 2 term1, prt 3 term2])
338338
Frontend.LambdaQ.Abs.TermCompose term1 term2 -> prPrec i 2 (concatD [prt 2 term1, doc (showString "."), prt 3 term2])
339339
Frontend.LambdaQ.Abs.TermTensorProduct term1 term2 -> prPrec i 2 (concatD [prt 2 term1, doc (showString "*"), prt 3 term2])

src/Frontend/LambdaQ/Skel.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,12 @@ transTerm x = case x of
189189
Frontend.LambdaQ.Abs.TermList list -> failure x
190190
Frontend.LambdaQ.Abs.TermVariable var -> failure x
191191
Frontend.LambdaQ.Abs.TermTuple term terms -> failure x
192-
Frontend.LambdaQ.Abs.TermQuantumCtrlGate controlterm controlbasisstate -> failure x
193-
Frontend.LambdaQ.Abs.TermQuantumTCtrlsGate controlterms controlbasisstates -> failure x
194-
Frontend.LambdaQ.Abs.TermQuantumVCtrlsGate controlvars controlbasisstates -> failure x
195-
Frontend.LambdaQ.Abs.TermClassicCtrlGate controlterm controlbit -> failure x
196-
Frontend.LambdaQ.Abs.TermClassicTCtrlsGate controlterms controlbits -> failure x
197-
Frontend.LambdaQ.Abs.TermClassicVCtrlsGate controlvars controlbits -> failure x
192+
Frontend.LambdaQ.Abs.TermGateQuantumCtrl controlterm controlbasisstate -> failure x
193+
Frontend.LambdaQ.Abs.TermGateQuantumTCtrls controlterms controlbasisstates -> failure x
194+
Frontend.LambdaQ.Abs.TermGateQuantumVCtrls controlvars controlbasisstates -> failure x
195+
Frontend.LambdaQ.Abs.TermGateClassicCtrl controlterm controlbit -> failure x
196+
Frontend.LambdaQ.Abs.TermGateClassicTCtrls controlterms controlbits -> failure x
197+
Frontend.LambdaQ.Abs.TermGateClassicVCtrls controlvars controlbits -> failure x
198198
Frontend.LambdaQ.Abs.TermApply term1 term2 -> failure x
199199
Frontend.LambdaQ.Abs.TermCompose term1 term2 -> failure x
200200
Frontend.LambdaQ.Abs.TermTensorProduct term1 term2 -> failure x

src/Frontend/PrettyPrinter.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ showTerm (TermGate g) = showGate g
2323
showTerm (TermList lst) = showTermList lst
2424
showTerm (TermVariable v) = showVar v
2525
showTerm (TermTuple t ts) = "(" ++ showTerm t ++ ", " ++ showTerms ts ++ ")"
26-
showTerm (TermQuantumCtrlGate ct cbs) = showControlTerm ct ++ " @ " ++ showControlBasisState cbs
27-
showTerm (TermQuantumTCtrlsGate cts cbss) = showControlTerms cts ++ " @ " ++ showControlBasisStates cbss
28-
showTerm (TermQuantumVCtrlsGate cvs cbss) = showControlVars cvs ++ " @ " ++ showControlBasisStates cbss
29-
showTerm (TermClassicCtrlGate ct cb) = showControlTerm ct ++ " values: " ++ showControlBit cb
30-
showTerm (TermClassicTCtrlsGate cts cbs) = showControlTerms cts ++ " values: " ++ showControlBits cbs
31-
showTerm (TermClassicVCtrlsGate cvs cbs) = showControlVars cvs ++ " values: " ++ showControlBits cbs
26+
showTerm (TermGateQuantumCtrl ct cbs) = showControlTerm ct ++ " @ " ++ showControlBasisState cbs
27+
showTerm (TermGateQuantumTCtrls cts cbss) = showControlTerms cts ++ " @ " ++ showControlBasisStates cbss
28+
showTerm (TermGateQuantumVCtrls cvs cbss) = showControlVars cvs ++ " @ " ++ showControlBasisStates cbss
29+
showTerm (TermGateClassicCtrl ct cb) = showControlTerm ct ++ " values: " ++ showControlBit cb
30+
showTerm (TermGateClassicTCtrls cts cbs) = showControlTerms cts ++ " values: " ++ showControlBits cbs
31+
showTerm (TermGateClassicVCtrls cvs cbs) = showControlVars cvs ++ " values: " ++ showControlBits cbs
3232
showTerm (TermApply t1 t2) = showTerm t1 ++ " " ++ showTerm t2
3333
showTerm (TermCompose t1 t2) = showTerm t1 ++ " . " ++ showTerm t2
3434
showTerm (TermTensorProduct t1 t2) = showTerm t1 ++ "" ++ showTerm t2

0 commit comments

Comments
 (0)