Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
C
comp2212-cw-2021
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
PLC
comp2212-cw-2021
Commits
1cbf18b2
Commit
1cbf18b2
authored
4 years ago
by
pm3g19
Browse files
Options
Downloads
Patches
Plain Diff
Solves problem 2
parent
7583ee9c
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
Eval.hs
+8
-7
8 additions, 7 deletions
Eval.hs
Interpreter.hs
+2
-2
2 additions, 2 deletions
Interpreter.hs
Lexer.x
+98
-46
98 additions, 46 deletions
Lexer.x
Parser.hs
+447
-204
447 additions, 204 deletions
Parser.hs
Types.hs
+1
-1
1 addition, 1 deletion
Types.hs
solutions/pr2.cql
+2
-1
2 additions, 1 deletion
solutions/pr2.cql
with
558 additions
and
261 deletions
Eval.hs
+
8
−
7
View file @
1cbf18b2
...
...
@@ -19,7 +19,7 @@ eval env expr = let (eval', evalFull') = (eval env, evalFull env) in case expr o
Filter
->
let
(
Set
inputRecords
,
predicate
)
=
(
eval'
$
head
inputSets
,
eval'
$
head
args
)
in
Set
$
filter
((
==
Boolean
True
)
.
(
\
r
->
eval'
$
FuncCall
predicate
[]
[
r
]))
$
map
eval'
inputRecords
Map
->
Set
(
map
(
\
record
->
FuncCall
lambda
[]
[
record
])
records
)
Map
->
Set
(
map
(
\
record
->
eval'
$
FuncCall
lambda
[]
[
record
])
records
)
where
(
Set
records
:
_
)
=
inputSets
(
lambda
:
_
)
=
args
...
...
@@ -31,12 +31,12 @@ eval env expr = let (eval', evalFull') = (eval env, evalFull env) in case expr o
Set
$
[
x
`
concatRecord
`
y
|
x
<-
l1
,
y
<-
l2
]
RecordIndex
->
let
(
Record
recordData
:
Int
index
:
_
)
=
(
map
eval'
args
)
in
recordData
!!
index
recordData
!!
(
index
-
1
)
RecordSelect
->
Record
filteredList
RecordSelect
->
debug
(
show
expr
)
$
Record
filteredList
where
(
Record
recordData
:
indexes
)
=
args
indexesRaw
=
map
(
\
(
Int
i
)
->
i
)
indexes
(
Record
recordData
:
indexes
)
=
map
eval'
args
indexesRaw
=
map
(
\
(
Int
i
)
->
i
-
1
)
indexes
filteredList
=
map
(
recordData
!!
)
indexesRaw
...
...
@@ -49,7 +49,7 @@ eval env expr = let (eval', evalFull') = (eval env, evalFull env) in case expr o
Contains
->
case
args
of
(
mainString
:
containsWhat
:
_
)
->
case
(
eval'
mainString
,
eval'
containsWhat
)
of
(
String
a
,
String
b
)
->
a
`
beginsWith
`
b
(
String
a
,
String
b
)
->
b
`
sublist
`
a
Plus
->
let
(
e1
:
e2
:
_
)
=
args
in
case
(
eval'
e1
,
eval'
e2
)
of
(
String
a
,
String
b
)
->
String
(
a
++
b
)
...
...
@@ -87,4 +87,5 @@ evalFull = eval
--evalFull _ e = e
--TODO implement properly
concatRecord
(
Record
r1
)
(
Record
r2
)
=
Record
(
r1
++
r2
)
beginsWith
=
notImplemented
\ No newline at end of file
sublist
=
notImplemented
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Interpreter.hs
+
2
−
2
View file @
1cbf18b2
...
...
@@ -16,7 +16,7 @@ main = do
args
<-
getArgs
case
args
of
(
srcname
:
_
)
->
interpret
srcname
_
->
interpret
"solutions/pr
1
.cql"
_
->
interpret
"solutions/pr
2
.cql"
interpret
::
FilePath
->
IO
()
-- the main function, takes in file name, prints out result
...
...
@@ -47,7 +47,7 @@ showFinal :: Expr -> IO ()
showFinal
=
(
print2DList
.
sort2DListLex
.
setTo2DList
)
setTo2DList
::
Expr
->
[[
String
]]
setTo2DList
(
Set
records
)
=
map
(
map
(
\
(
String
s
)
->
s
)
.
(
\
(
Record
list
)
->
list
))
records
setTo2DList
(
Set
records
)
=
traceShow
records
$
map
(
map
(
\
(
String
s
)
->
s
)
.
(
\
(
Record
list
)
->
list
))
records
--------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
Lexer.x
+
98
−
46
View file @
1cbf18b2
...
...
@@ -3,61 +3,113 @@ module Lexer where
import Data.List
}
%wrapper "
basic
"
%wrapper "
posn
"
$digit = 0-9
$posDigit = 1-9
$alpha = [a-zA-Z]
$lower = [a-z]
$upper = [A-Z]
--\\map(\r -> r[1,2,3])
tokens :-
$white+ ;
filter {\s -> TokenFilter }
true {\s -> TokenTrue }
false {\s -> TokenFalse }
\.in {\s -> TokenInSet }
\.out {\s -> TokenOutSet }
\[ {\s -> TokenLeftSqBracket }
\] {\s -> TokenRightSqBracket }
"->" {\s -> TokenArrow }
"==" {\s -> TokenisEqual }
"/=" {\s -> TokenisNotEqual }
\( {\s -> TokenLeftBracket }
\) {\s -> TokenRightBracket }
\; {\s -> TokenSemiCol }
\\ {\s -> TokenLambda }
\, {\s -> TokenComma }
\. {\s -> TokenFullStop }
x {\s -> TokenXProduct }
$lower [$lower $digit \_ \']* {\s -> TokenVarName s }
$upper[$alpha]* {\s -> TokenSetName s }
$digit+ {\s -> TokenNat (read s) }
\"[$alpha $digit]+\" {\s -> ((TokenString).init.tail) s }
\#.* ;
contains {\p s -> TokenContains p }
isEmpty {\p s -> TokenIsEmpty p }
filter {\p s -> TokenFilter p }
true {\p s -> TokenTrue p }
false {\p s -> TokenFalse p }
\.in {\p s -> TokenInSet p }
\.out {\p s -> TokenOutSet p }
\[ {\p s -> TokenLeftSqBracket p }
\] {\p s -> TokenRightSqBracket p }
"->" {\p s -> TokenArrow p }
"==" {\p s -> TokenisEqual p }
"/=" {\p s -> TokenisNotEqual p }
"+" {\p s -> TokenPlus p }
\( {\p s -> TokenLeftBracket p }
\) {\p s -> TokenRightBracket p }
\: {\p s -> TokenCol p }
\; {\p s -> TokenSemiCol p }
\\ {\p s -> TokenLambda p }
\, {\p s -> TokenComma p }
\. {\p s -> TokenFullStop p }
x {\p s -> TokenXProduct p }
xx {\p s -> TokenXXProduct p }
map {\p s -> TokenMap p }
$lower [$lower $digit \_ \']* {\p s -> TokenVarName p s }
$upper[$alpha]* {\p s -> TokenSetName p s }
--$posDigit$digit* {\p s -> TokenPosNat p (read s) }
$digit+ {\p s -> TokenNat p (read s) }
\"[$alpha $digit]+\" {\p s -> TokenString p (init.tail $ s) }
{
--token type:
data Token =
TokenFilter |
TokenSetName String |
TokenFunc |
TokenNat Int |
TokenVarName String |
TokenTrue |
TokenFalse |
TokenString String |
TokenLeftSqBracket |
TokenRightSqBracket |
TokenArrow |
TokenisEqual |
TokenisNotEqual |
TokenLeftBracket |
TokenRightBracket |
TokenSemiCol |
TokenLambda |
TokenComma |
TokenFullStop |
TokenInSet |
TokenXProduct |
TokenOutSet
TokenFilter AlexPosn |
TokenIsEmpty AlexPosn |
TokenContains AlexPosn |
TokenSetName AlexPosn String |
TokenNat AlexPosn Int |
TokenPosNat AlexPosn Int |
TokenVarName AlexPosn String |
TokenTrue AlexPosn |
TokenFalse AlexPosn |
TokenString AlexPosn String |
TokenLeftSqBracket AlexPosn |
TokenRightSqBracket AlexPosn |
TokenArrow AlexPosn |
TokenisEqual AlexPosn |
TokenisNotEqual AlexPosn |
TokenPlus AlexPosn |
TokenLeftBracket AlexPosn |
TokenRightBracket AlexPosn |
TokenSemiCol AlexPosn |
TokenCol AlexPosn |
TokenLambda AlexPosn |
TokenComma AlexPosn |
TokenFullStop AlexPosn |
TokenInSet AlexPosn |
TokenXProduct AlexPosn |
TokenXXProduct AlexPosn |
TokenOutSet AlexPosn |
TokenMap AlexPosn
deriving (Eq, Show)
pos :: Token -> AlexPosn
pos token = case token of
(TokenFilter p ) -> p
(TokenIsEmpty p ) -> p
(TokenContains p ) -> p
(TokenSetName p _) -> p
(TokenNat p _) -> p
(TokenPosNat p _) -> p
(TokenVarName p _) -> p
(TokenTrue p ) -> p
(TokenFalse p ) -> p
(TokenString p _) -> p
(TokenLeftSqBracket p ) -> p
(TokenRightSqBracket p ) -> p
(TokenArrow p ) -> p
(TokenisEqual p ) -> p
(TokenisNotEqual p ) -> p
(TokenPlus p ) -> p
(TokenLeftBracket p ) -> p
(TokenRightBracket p ) -> p
(TokenSemiCol p ) -> p
(TokenCol p ) -> p
(TokenLambda p ) -> p
(TokenComma p ) -> p
(TokenFullStop p ) -> p
(TokenInSet p ) -> p
(TokenXProduct p ) -> p
(TokenXXProduct p ) -> p
(TokenOutSet p ) -> p
(TokenMap p) -> p
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Parser.hs
+
447
−
204
View file @
1cbf18b2
...
...
@@ -2,6 +2,7 @@
module
Parser
where
import
Lexer
import
Types
import
CSV
import
qualified
Data.Array
as
Happy_Data_Array
import
qualified
Data.Bits
as
Bits
import
Control.Applicative
(
Applicative
(
..
))
...
...
@@ -9,7 +10,7 @@ import Control.Monad (ap)
-- parser produced by Happy Version 1.20.0
data
HappyAbsSyn
t4
t5
t6
t7
t8
t9
t10
t11
t12
data
HappyAbsSyn
t4
t5
t6
t7
t8
t9
t10
t11
t12
t13
t14
t15
t16
t17
=
HappyTerminal
(
Token
)
|
HappyErrorToken
Prelude
.
Int
|
HappyAbsSyn4
t4
...
...
@@ -21,375 +22,614 @@ data HappyAbsSyn t4 t5 t6 t7 t8 t9 t10 t11 t12
|
HappyAbsSyn10
t10
|
HappyAbsSyn11
t11
|
HappyAbsSyn12
t12
|
HappyAbsSyn13
t13
|
HappyAbsSyn14
t14
|
HappyAbsSyn15
t15
|
HappyAbsSyn16
t16
|
HappyAbsSyn17
t17
happyExpList
::
Happy_Data_Array
.
Array
Prelude
.
Int
Prelude
.
Int
happyExpList
=
Happy_Data_Array
.
listArray
(
0
,
75
)
([
8192
,
0
,
16384
,
0
,
0
,
2
,
0
,
0
,
0
,
4
,
0
,
0
,
8
,
32
,
0
,
8
,
0
,
0
,
0
,
0
,
32
,
32768
,
0
,
0
,
0
,
2048
,
0
,
512
,
0
,
0
,
0
,
0
,
32
,
0
,
1024
,
0
,
16384
,
0
,
8192
,
0
,
8192
,
0
,
3
2
,
0
,
0
,
0
,
0
,
2
,
0
,
32
,
512
,
0
,
0
,
1
,
63488
,
0
,
0
,
0
,
0
,
18
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
248
,
0
,
2304
,
2
,
1024
,
0
,
32
,
0
,
3968
,
0
,
0
,
0
,
16384
,
0
,
0
,
0
,
63488
,
0
,
0
,
0
,
0
,
0
,
0
happyExpList
=
Happy_Data_Array
.
listArray
(
0
,
118
)
([
0
,
4
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
512
,
2048
,
0
,
0
,
128
,
0
,
128
,
0
,
0
,
18
,
512
,
0
,
4
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1024
,
0
,
0
,
66
,
0
,
0
,
4096
,
0
,
0
,
4
,
0
,
0
,
0
,
0
,
0
,
4
,
0
,
1
,
0
,
16384
,
0
,
0
,
0
,
4096
,
0
,
1152
,
32768
,
0
,
0
,
0
,
0
,
0
,
8
,
0
,
0
,
1
,
0
,
1024
,
0
,
0
,
0
,
0
,
0
,
2048
,
0
,
0
,
0
,
0
,
0
,
64
,
0
,
2048
,
0
,
0
,
0
,
0
,
0
,
0
,
2
,
0
,
0
,
8
,
0
,
0
,
1
,
0
,
2048
,
0
,
32768
,
0
,
0
,
0
,
8
,
0
,
63488
,
32768
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
4608
,
0
,
0
,
4096
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
992
,
1536
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
8264
,
0
,
0
,
4
,
0
,
63488
,
32768
,
1
,
128
,
0
,
0
,
3968
,
6144
,
0
,
0
,
0
,
0
,
256
,
2
,
0
,
2048
,
0
,
0
,
0
,
0
,
57344
,
3
,
6
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
8
,
0
,
0
,
256
,
0
,
0
,
32768
,
0
,
8192
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
])
{-# NOINLINE happyExpListPerState #-}
happyExpListPerState
st
=
token_strs_expected
where
token_strs
=
[
"error"
,
"%dummy"
,
"%start_parseSource"
,
"Prog"
,
"SetNames"
,
"VarNames"
,
"SetFuncCalls"
,
"SetFuncCall"
,
"Func"
,
"Expr"
,
"Record"
,
"Exprs"
,
"filter"
,
"in"
,
"out"
,
"SetName"
,
"Nat"
,
"VarName"
,
"true"
,
"false"
,
"Str"
,
"'['"
,
"']'"
,
"
\"
->
\"
"
,
"
\"
==
\"
"
,
"
\"
/=
\"
"
,
"'('"
,
"')'"
,
"';'"
,
"'
\\\\
'"
,
"','"
,
"'.'"
,
"%eof"
]
bit_start
=
st
Prelude
.*
33
bit_end
=
(
st
Prelude
.+
1
)
Prelude
.*
33
where
token_strs
=
[
"error"
,
"%dummy"
,
"%start_parseSource"
,
"Prog"
,
"
SetDecl"
,
"SetDecls"
,
"
SetNames"
,
"VarNames"
,
"SetFuncCalls"
,
"SetFuncCall"
,
"Func"
,
"Expr"
,
"
Function"
,
"PredefFunc"
,
"
Record"
,
"Exprs"
,
"
Nats"
,
"
filter"
,
"in"
,
"out"
,
"SetName"
,
"Nat"
,
"
PosNat"
,
"
VarName"
,
"true"
,
"false"
,
"Str"
,
"'['"
,
"']'"
,
"
\"
->
\"
"
,
"
\"
==
\"
"
,
"
\"
/=
\"
"
,
"'('"
,
"')'"
,
"';'"
,
"'
:'"
,
"'
\\\\
'"
,
"','"
,
"'.'"
,
"
'+'"
,
"x"
,
"map"
,
"xx"
,
"contains"
,
"isEmpty"
,
"
%eof"
]
bit_start
=
st
Prelude
.*
46
bit_end
=
(
st
Prelude
.+
1
)
Prelude
.*
46
read_bit
=
readArrayBit
happyExpList
bits
=
Prelude
.
map
read_bit
[
bit_start
..
bit_end
Prelude
.-
1
]
bits_indexed
=
Prelude
.
zip
bits
[
0
..
32
]
bits_indexed
=
Prelude
.
zip
bits
[
0
..
45
]
token_strs_expected
=
Prelude
.
concatMap
f
bits_indexed
f
(
Prelude
.
False
,
_
)
=
[]
f
(
Prelude
.
True
,
nr
)
=
[
token_strs
Prelude
.!!
nr
]
action_0
(
1
4
)
=
happyShift
action_2
action_0
(
1
9
)
=
happyShift
action_2
action_0
(
4
)
=
happyGoto
action_3
action_0
_
=
happyFail
(
happyExpListPerState
0
)
action_1
(
1
4
)
=
happyShift
action_2
action_1
(
1
9
)
=
happyShift
action_2
action_1
_
=
happyFail
(
happyExpListPerState
1
)
action_2
(
1
6
)
=
happyShift
action_
5
action_2
(
2
1
)
=
happyShift
action_
6
action_2
(
5
)
=
happyGoto
action_4
action_2
(
6
)
=
happyGoto
action_5
action_2
_
=
happyFail
(
happyExpListPerState
2
)
action_3
(
33
)
=
happyAccept
action_3
(
46
)
=
happyAccept
action_3
_
=
happyFail
(
happyExpListPerState
3
)
action_4
(
15
)
=
happyShift
action_7
action_4
_
=
happyFail
(
happyExpListPerState
4
)
action_4
_
=
happyReduce_3
action_5
(
31
)
=
happyShift
action_6
action_5
_
=
happyReduce_2
action_5
(
20
)
=
happyShift
action_8
action_5
(
38
)
=
happyShift
action_9
action_5
_
=
happyFail
(
happyExpListPerState
5
)
action_6
(
16
)
=
happyShift
action_5
action_6
(
5
)
=
happyGoto
action_11
action_6
(
36
)
=
happyShift
action_7
action_6
_
=
happyFail
(
happyExpListPerState
6
)
action_7
(
13
)
=
happyShift
action_10
action_7
(
7
)
=
happyGoto
action_8
action_7
(
8
)
=
happyGoto
action_9
action_7
(
22
)
=
happyShift
action_16
action_7
_
=
happyFail
(
happyExpListPerState
7
)
action_8
_
=
happyReduce_1
action_8
(
18
)
=
happyShift
action_13
action_8
(
21
)
=
happyShift
action_14
action_8
(
42
)
=
happyShift
action_15
action_8
(
9
)
=
happyGoto
action_11
action_8
(
10
)
=
happyGoto
action_12
action_8
_
=
happyFail
(
happyExpListPerState
8
)
action_9
(
29
)
=
happyShift
action_13
action_9
_
=
happyReduce_6
action_9
(
21
)
=
happyShift
action_6
action_9
(
5
)
=
happyGoto
action_10
action_9
_
=
happyFail
(
happyExpListPerState
9
)
action_10
(
22
)
=
happyShift
action_12
action_10
_
=
happyFail
(
happyExpListPerState
10
)
action_10
_
=
happyReduce_4
action_11
_
=
happyReduce_
3
action_11
_
=
happyReduce_
1
action_12
(
16
)
=
happyShift
action_1
5
action_12
(
35
)
=
happyShift
action_
2
1
action_12
_
=
happyFail
(
happyExpListPerState
12
)
action_13
(
13
)
=
happyShift
action_10
action_13
(
7
)
=
happyGoto
action_14
action_13
(
8
)
=
happyGoto
action_9
action_13
(
28
)
=
happyShift
action_19
action_13
(
33
)
=
happyShift
action_20
action_13
_
=
happyFail
(
happyExpListPerState
13
)
action_14
_
=
happyReduce_7
action_14
(
41
)
=
happyShift
action_18
action_14
_
=
happyFail
(
happyExpListPerState
14
)
action_15
(
2
3
)
=
happyShift
action_1
6
action_15
(
3
3
)
=
happyShift
action_1
7
action_15
_
=
happyFail
(
happyExpListPerState
15
)
action_16
(
27
)
=
happyShift
action_17
action_16
_
=
happyFail
(
happyExpListPerState
16
)
action_16
_
=
happyReduce_2
action_17
(
3
0
)
=
happyShift
action_
19
action_17
(
9
)
=
happyGoto
action_
18
action_17
(
3
7
)
=
happyShift
action_
24
action_17
(
11
)
=
happyGoto
action_
27
action_17
_
=
happyFail
(
happyExpListPerState
17
)
action_18
(
2
8
)
=
happyShift
action_2
1
action_18
(
2
1
)
=
happyShift
action_2
6
action_18
_
=
happyFail
(
happyExpListPerState
18
)
action_19
(
2
7
)
=
happyShift
action_2
0
action_19
(
2
1
)
=
happyShift
action_2
5
action_19
_
=
happyFail
(
happyExpListPerState
19
)
action_20
(
18
)
=
happyShift
action_2
3
action_20
(
6
)
=
happyGoto
action_2
2
action_20
(
37
)
=
happyShift
action_2
4
action_20
(
11
)
=
happyGoto
action_2
3
action_20
_
=
happyFail
(
happyExpListPerState
20
)
action_21
_
=
happyReduce_8
action_21
(
18
)
=
happyShift
action_13
action_21
(
21
)
=
happyShift
action_14
action_21
(
42
)
=
happyShift
action_15
action_21
(
9
)
=
happyGoto
action_22
action_21
(
10
)
=
happyGoto
action_12
action_21
_
=
happyReduce_9
action_22
(
28
)
=
happyShift
action_25
action_22
_
=
happyFail
(
happyExpListPerState
22
)
action_22
_
=
happyReduce_10
action_23
(
3
1
)
=
happyShift
action_
24
action_23
_
=
happy
Reduce_4
action_23
(
3
4
)
=
happyShift
action_
31
action_23
_
=
happy
Fail
(
happyExpListPerState
23
)
action_24
(
18
)
=
happyShift
action_23
action_24
(
6
)
=
happyGoto
action_27
action_24
(
33
)
=
happyShift
action_30
action_24
_
=
happyFail
(
happyExpListPerState
24
)
action_25
(
2
4
)
=
happyShift
action_2
6
action_25
(
2
9
)
=
happyShift
action_2
9
action_25
_
=
happyFail
(
happyExpListPerState
25
)
action_26
(
18
)
=
happyShift
action_30
action_26
(
19
)
=
happyShift
action_31
action_26
(
20
)
=
happyShift
action_32
action_26
(
21
)
=
happyShift
action_33
action_26
(
22
)
=
happyShift
action_34
action_26
(
10
)
=
happyGoto
action_28
action_26
(
11
)
=
happyGoto
action_29
action_26
_
=
happyFail
(
happyExpListPerState
26
)
action_26
_
=
happyReduce_14
action_27
_
=
happyReduce_5
action_27
(
34
)
=
happyShift
action_28
action_27
_
=
happyFail
(
happyExpListPerState
27
)
action_28
(
22
)
=
happyShift
action_37
action_28
(
25
)
=
happyShift
action_38
action_28
_
=
happyReduce_9
action_28
_
=
happyReduce_13
action_29
_
=
happyReduce_14
action_29
(
33
)
=
happyShift
action_34
action_29
_
=
happyFail
(
happyExpListPerState
29
)
action_30
_
=
happyReduce_13
action_30
(
24
)
=
happyShift
action_33
action_30
(
8
)
=
happyGoto
action_32
action_30
_
=
happyFail
(
happyExpListPerState
30
)
action_31
_
=
happyReduce_1
5
action_31
_
=
happyReduce_1
2
action_32
_
=
happyReduce_16
action_32
(
34
)
=
happyShift
action_37
action_32
_
=
happyFail
(
happyExpListPerState
32
)
action_33
_
=
happyReduce_12
action_33
(
38
)
=
happyShift
action_36
action_33
_
=
happyReduce_7
action_34
(
18
)
=
happyShift
action_30
action_34
(
19
)
=
happyShift
action_31
action_34
(
20
)
=
happyShift
action_32
action_34
(
21
)
=
happyShift
action_33
action_34
(
22
)
=
happyShift
action_34
action_34
(
10
)
=
happyGoto
action_35
action_34
(
11
)
=
happyGoto
action_29
action_34
(
12
)
=
happyGoto
action_36
action_34
(
37
)
=
happyShift
action_24
action_34
(
11
)
=
happyGoto
action_35
action_34
_
=
happyFail
(
happyExpListPerState
34
)
action_35
(
22
)
=
happyShift
action_37
action_35
(
25
)
=
happyShift
action_38
action_35
(
31
)
=
happyShift
action_42
action_35
_
=
happyReduce_18
action_35
(
34
)
=
happyShift
action_40
action_35
_
=
happyFail
(
happyExpListPerState
35
)
action_36
(
23
)
=
happyShift
action_41
action_36
(
24
)
=
happyShift
action_33
action_36
(
8
)
=
happyGoto
action_39
action_36
_
=
happyFail
(
happyExpListPerState
36
)
action_37
(
17
)
=
happyShift
action_
40
action_37
(
30
)
=
happyShift
action_
38
action_37
_
=
happyFail
(
happyExpListPerState
37
)
action_38
(
18
)
=
happyShift
action_30
action_38
(
19
)
=
happyShift
action_31
action_38
(
20
)
=
happyShift
action_32
action_38
(
21
)
=
happyShift
action_33
action_38
(
22
)
=
happyShift
action_34
action_38
(
10
)
=
happyGoto
action_39
action_38
(
11
)
=
happyGoto
action_29
action_38
(
24
)
=
happyShift
action_45
action_38
(
25
)
=
happyShift
action_46
action_38
(
26
)
=
happyShift
action_47
action_38
(
27
)
=
happyShift
action_48
action_38
(
28
)
=
happyShift
action_49
action_38
(
44
)
=
happyShift
action_50
action_38
(
45
)
=
happyShift
action_51
action_38
(
12
)
=
happyGoto
action_41
action_38
(
13
)
=
happyGoto
action_42
action_38
(
14
)
=
happyGoto
action_43
action_38
(
15
)
=
happyGoto
action_44
action_38
_
=
happyFail
(
happyExpListPerState
38
)
action_39
(
22
)
=
happyShift
action_37
action_39
_
=
happyReduce_10
action_39
_
=
happyReduce_8
action_40
(
23
)
=
happyShift
action_44
action_40
_
=
happyFail
(
happyExpListPerState
40
)
action_40
_
=
happyReduce_11
action_41
_
=
happyReduce_17
action_41
(
28
)
=
happyShift
action_55
action_41
(
31
)
=
happyShift
action_56
action_41
_
=
happyReduce_15
action_42
(
18
)
=
happyShift
action_30
action_42
(
19
)
=
happyShift
action_31
action_42
(
20
)
=
happyShift
action_32
action_42
(
21
)
=
happyShift
action_33
action_42
(
22
)
=
happyShift
action_34
action_42
(
10
)
=
happyGoto
action_35
action_42
(
11
)
=
happyGoto
action_29
action_42
(
12
)
=
happyGoto
action_43
action_42
(
33
)
=
happyShift
action_54
action_42
_
=
happyFail
(
happyExpListPerState
42
)
action_43
_
=
happyReduce_19
action_44
_
=
happyReduce_11
action_43
_
=
happyReduce_25
action_44
_
=
happyReduce_22
action_45
(
33
)
=
happyReduce_26
action_45
_
=
happyReduce_21
action_46
_
=
happyReduce_23
action_47
_
=
happyReduce_24
action_48
_
=
happyReduce_20
action_49
(
24
)
=
happyShift
action_45
action_49
(
25
)
=
happyShift
action_46
action_49
(
26
)
=
happyShift
action_47
action_49
(
27
)
=
happyShift
action_48
action_49
(
28
)
=
happyShift
action_49
action_49
(
44
)
=
happyShift
action_50
action_49
(
45
)
=
happyShift
action_51
action_49
(
12
)
=
happyGoto
action_52
action_49
(
13
)
=
happyGoto
action_42
action_49
(
14
)
=
happyGoto
action_43
action_49
(
15
)
=
happyGoto
action_44
action_49
(
16
)
=
happyGoto
action_53
action_49
_
=
happyFail
(
happyExpListPerState
49
)
action_50
_
=
happyReduce_28
action_51
_
=
happyReduce_27
action_52
(
28
)
=
happyShift
action_55
action_52
(
31
)
=
happyShift
action_56
action_52
(
38
)
=
happyShift
action_61
action_52
_
=
happyReduce_30
action_53
(
29
)
=
happyShift
action_60
action_53
_
=
happyFail
(
happyExpListPerState
53
)
action_54
(
24
)
=
happyShift
action_45
action_54
(
25
)
=
happyShift
action_46
action_54
(
26
)
=
happyShift
action_47
action_54
(
27
)
=
happyShift
action_48
action_54
(
28
)
=
happyShift
action_49
action_54
(
44
)
=
happyShift
action_50
action_54
(
45
)
=
happyShift
action_51
action_54
(
12
)
=
happyGoto
action_52
action_54
(
13
)
=
happyGoto
action_42
action_54
(
14
)
=
happyGoto
action_43
action_54
(
15
)
=
happyGoto
action_44
action_54
(
16
)
=
happyGoto
action_59
action_54
_
=
happyFail
(
happyExpListPerState
54
)
action_55
(
22
)
=
happyShift
action_58
action_55
_
=
happyFail
(
happyExpListPerState
55
)
action_56
(
24
)
=
happyShift
action_45
action_56
(
25
)
=
happyShift
action_46
action_56
(
26
)
=
happyShift
action_47
action_56
(
27
)
=
happyShift
action_48
action_56
(
28
)
=
happyShift
action_49
action_56
(
44
)
=
happyShift
action_50
action_56
(
45
)
=
happyShift
action_51
action_56
(
12
)
=
happyGoto
action_57
action_56
(
13
)
=
happyGoto
action_42
action_56
(
14
)
=
happyGoto
action_43
action_56
(
15
)
=
happyGoto
action_44
action_56
_
=
happyFail
(
happyExpListPerState
56
)
action_57
(
28
)
=
happyShift
action_55
action_57
_
=
happyReduce_16
action_58
(
29
)
=
happyShift
action_64
action_58
(
38
)
=
happyShift
action_65
action_58
_
=
happyFail
(
happyExpListPerState
58
)
action_59
(
34
)
=
happyShift
action_63
action_59
_
=
happyFail
(
happyExpListPerState
59
)
action_60
_
=
happyReduce_29
action_61
(
24
)
=
happyShift
action_45
action_61
(
25
)
=
happyShift
action_46
action_61
(
26
)
=
happyShift
action_47
action_61
(
27
)
=
happyShift
action_48
action_61
(
28
)
=
happyShift
action_49
action_61
(
44
)
=
happyShift
action_50
action_61
(
45
)
=
happyShift
action_51
action_61
(
12
)
=
happyGoto
action_52
action_61
(
13
)
=
happyGoto
action_42
action_61
(
14
)
=
happyGoto
action_43
action_61
(
15
)
=
happyGoto
action_44
action_61
(
16
)
=
happyGoto
action_62
action_61
_
=
happyFail
(
happyExpListPerState
61
)
action_62
_
=
happyReduce_31
action_63
_
=
happyReduce_19
action_64
_
=
happyReduce_17
action_65
(
22
)
=
happyShift
action_67
action_65
(
17
)
=
happyGoto
action_66
action_65
_
=
happyFail
(
happyExpListPerState
65
)
action_66
(
29
)
=
happyShift
action_69
action_66
_
=
happyFail
(
happyExpListPerState
66
)
action_67
(
38
)
=
happyShift
action_68
action_67
_
=
happyReduce_32
action_68
(
22
)
=
happyShift
action_67
action_68
(
17
)
=
happyGoto
action_70
action_68
_
=
happyFail
(
happyExpListPerState
68
)
action_69
_
=
happyReduce_18
action_70
_
=
happyReduce_33
happyReduce_1
=
happyReduce
4
4
happyReduction_1
happyReduction_1
((
HappyAbsSyn
7
happy_var_4
)
`
HappyStk
`
happyReduction_1
((
HappyAbsSyn
9
happy_var_4
)
`
HappyStk
`
_
`
HappyStk
`
(
HappyAbsSyn
5
happy_var_2
)
`
HappyStk
`
(
HappyAbsSyn
6
happy_var_2
)
`
HappyStk
`
_
`
HappyStk
`
happyRest
)
=
HappyAbsSyn4
((
happy_var_2
,
happy_var_4
)
)
`
HappyStk
`
happyRest
happyReduce_2
=
happySpecReduce_1
5
happyReduction_2
happyReduction_2
(
HappyTerminal
(
TokenSetName
happy_var_1
))
happyReduce_2
=
happySpecReduce_3
5
happyReduction_2
happyReduction_2
_
_
(
HappyTerminal
(
TokenSetName
_
happy_var_1
))
=
HappyAbsSyn5
(
happy_var_1
)
happyReduction_2
_
_
_
=
notHappyAtAll
happyReduce_3
=
happySpecReduce_1
6
happyReduction_3
happyReduction_3
(
HappyAbsSyn5
happy_var_1
)
=
HappyAbsSyn6
([
happy_var_1
]
)
happyReduction_
2
_
=
notHappyAtAll
happyReduction_
3
_
=
notHappyAtAll
happyReduce_
3
=
happySpecReduce_3
5
happyReduction_
3
happyReduction_
3
(
HappyAbsSyn5
happy_var_3
)
happyReduce_
4
=
happySpecReduce_3
6
happyReduction_
4
happyReduction_
4
(
HappyAbsSyn5
happy_var_3
)
_
(
HappyTerminal
(
TokenSetName
happy_var_1
))
=
HappyAbsSyn5
(
HappyAbsSyn6
happy_var_1
)
=
HappyAbsSyn6
(
happy_var_3
:
happy_var_1
)
happyReduction_4
_
_
_
=
notHappyAtAll
happyReduce_5
=
happySpecReduce_1
7
happyReduction_5
happyReduction_5
(
HappyTerminal
(
TokenSetName
_
happy_var_1
))
=
HappyAbsSyn7
([
happy_var_1
]
)
happyReduction_5
_
=
notHappyAtAll
happyReduce_6
=
happySpecReduce_3
7
happyReduction_6
happyReduction_6
(
HappyAbsSyn7
happy_var_3
)
_
(
HappyTerminal
(
TokenSetName
_
happy_var_1
))
=
HappyAbsSyn7
(
happy_var_1
:
happy_var_3
)
happyReduction_
3
_
_
_
=
notHappyAtAll
happyReduction_
6
_
_
_
=
notHappyAtAll
happyReduce_
4
=
happySpecReduce_1
6
happyReduction_
4
happyReduction_
4
(
HappyTerminal
(
TokenVarName
happy_var_1
))
=
HappyAbsSyn
6
happyReduce_
7
=
happySpecReduce_1
8
happyReduction_
7
happyReduction_
7
(
HappyTerminal
(
TokenVarName
_
happy_var_1
))
=
HappyAbsSyn
8
([
happy_var_1
]
)
happyReduction_
4
_
=
notHappyAtAll
happyReduction_
7
_
=
notHappyAtAll
happyReduce_
5
=
happySpecReduce_3
6
happyReduction_
5
happyReduction_
5
(
HappyAbsSyn
6
happy_var_3
)
happyReduce_
8
=
happySpecReduce_3
8
happyReduction_
8
happyReduction_
8
(
HappyAbsSyn
8
happy_var_3
)
_
(
HappyTerminal
(
TokenVarName
happy_var_1
))
=
HappyAbsSyn
6
(
HappyTerminal
(
TokenVarName
_
happy_var_1
))
=
HappyAbsSyn
8
(
happy_var_1
:
happy_var_3
)
happyReduction_
5
_
_
_
=
notHappyAtAll
happyReduction_
8
_
_
_
=
notHappyAtAll
happyReduce_6
=
happySpecReduce_1
7
happyReduction_6
happyReduction_6
(
HappyAbsSyn8
happy_var_1
)
=
HappyAbsSyn7
happyReduce_9
=
happySpecReduce_2
9
happyReduction_9
happyReduction_9
_
(
HappyAbsSyn10
happy_var_1
)
=
HappyAbsSyn9
([
happy_var_1
]
)
happyReduction_
6
_
=
notHappyAtAll
happyReduction_
9
_
_
=
notHappyAtAll
happyReduce_
7
=
happySpecReduce_3
7
happyReduction_
7
happyReduction_
7
(
HappyAbsSyn
7
happy_var_3
)
happyReduce_
10
=
happySpecReduce_3
9
happyReduction_
10
happyReduction_
10
(
HappyAbsSyn
9
happy_var_3
)
_
(
HappyAbsSyn
8
happy_var_1
)
=
HappyAbsSyn
7
(
HappyAbsSyn
10
happy_var_1
)
=
HappyAbsSyn
9
(
happy_var_1
:
happy_var_3
)
happyReduction_
7
_
_
_
=
notHappyAtAll
happyReduction_
10
_
_
_
=
notHappyAtAll
happyReduce_
8
=
happyReduce
7
8
happyReduction_
8
happyReduction_
8
(
_
`
HappyStk
`
(
HappyAbsSyn
9
happy_var_6
)
`
HappyStk
`
happyReduce_
11
=
happyReduce
7
10
happyReduction_
11
happyReduction_
11
(
_
`
HappyStk
`
(
HappyAbsSyn
11
happy_var_6
)
`
HappyStk
`
_
`
HappyStk
`
_
`
HappyStk
`
(
HappyTerminal
(
TokenSetName
happy_var_3
))
`
HappyStk
`
(
HappyTerminal
(
TokenSetName
_
happy_var_3
))
`
HappyStk
`
_
`
HappyStk
`
_
`
HappyStk
`
happyRest
)
=
HappyAbsSyn
8
=
HappyAbsSyn
10
(
FuncCall
(
PredefFunc
Filter
)
[
Var
happy_var_3
]
[
happy_var_6
]
)
`
HappyStk
`
happyRest
happyReduce_9
=
happyReduce
6
9
happyReduction_9
happyReduction_9
((
HappyAbsSyn10
happy_var_6
)
`
HappyStk
`
happyReduce_12
=
happyReduce
4
10
happyReduction_12
happyReduction_12
(
_
`
HappyStk
`
(
HappyAbsSyn11
happy_var_3
)
`
HappyStk
`
_
`
HappyStk
`
_
`
HappyStk
`
(
HappyAbsSyn6
happy_var_3
)
`
HappyStk
`
happyRest
)
=
HappyAbsSyn10
(
FuncCall
(
PredefFunc
Filter
)
[]
[
happy_var_3
]
)
`
HappyStk
`
happyRest
happyReduce_13
=
happyReduce
4
10
happyReduction_13
happyReduction_13
(
_
`
HappyStk
`
(
HappyAbsSyn11
happy_var_3
)
`
HappyStk
`
_
`
HappyStk
`
_
`
HappyStk
`
happyRest
)
=
HappyAbsSyn
9
(
Func
Def
[]
happy_var_3
happy_var_6
=
HappyAbsSyn
10
(
Func
Call
(
PredefFunc
Map
)
[]
[
happy_var_3
]
)
`
HappyStk
`
happyRest
happyReduce_1
0
=
happySpecReduce_3
10
happyReduction_1
0
happyReduction_1
0
(
Happy
AbsSyn10
happy_var_3
)
happyReduce_1
4
=
happySpecReduce_3
10
happyReduction_1
4
happyReduction_1
4
(
Happy
Terminal
(
TokenSetName
_
happy_var_3
)
)
_
(
Happy
AbsSyn10
happy_var_1
)
(
Happy
Terminal
(
TokenSetName
_
happy_var_1
)
)
=
HappyAbsSyn10
(
FuncCall
(
PredefFunc
XProduct
)
(
map
Var
[
happy_var_1
,
happy_var_3
])
[]
)
happyReduction_14
_
_
_
=
notHappyAtAll
happyReduce_15
=
happyReduce
6
11
happyReduction_15
happyReduction_15
((
HappyAbsSyn12
happy_var_6
)
`
HappyStk
`
_
`
HappyStk
`
_
`
HappyStk
`
(
HappyAbsSyn8
happy_var_3
)
`
HappyStk
`
_
`
HappyStk
`
_
`
HappyStk
`
happyRest
)
=
HappyAbsSyn11
(
FuncDef
[]
happy_var_3
happy_var_6
)
`
HappyStk
`
happyRest
happyReduce_16
=
happySpecReduce_3
12
happyReduction_16
happyReduction_16
(
HappyAbsSyn12
happy_var_3
)
_
(
HappyAbsSyn12
happy_var_1
)
=
HappyAbsSyn12
(
FuncCall
(
PredefFunc
IsEqual
)
[]
[
happy_var_1
,
happy_var_3
]
)
happyReduction_1
0
_
_
_
=
notHappyAtAll
happyReduction_1
6
_
_
_
=
notHappyAtAll
happyReduce_1
1
=
happyReduce
4
1
0
happyReduction_1
1
happyReduction_1
1
(
_
`
HappyStk
`
(
HappyTerminal
(
TokenNat
happy_var_3
))
`
HappyStk
`
happyReduce_1
7
=
happyReduce
4
1
2
happyReduction_1
7
happyReduction_1
7
(
_
`
HappyStk
`
(
HappyTerminal
(
TokenNat
_
happy_var_3
))
`
HappyStk
`
_
`
HappyStk
`
(
HappyAbsSyn1
0
happy_var_1
)
`
HappyStk
`
(
HappyAbsSyn1
2
happy_var_1
)
`
HappyStk
`
happyRest
)
=
HappyAbsSyn1
0
=
HappyAbsSyn1
2
(
FuncCall
(
PredefFunc
RecordIndex
)
[]
[
happy_var_1
,
Types
.
Int
happy_var_3
]
)
`
HappyStk
`
happyRest
happyReduce_12
=
happySpecReduce_1
10
happyReduction_12
happyReduction_12
(
HappyTerminal
(
TokenString
happy_var_1
))
=
HappyAbsSyn10
(
Types
.
String
happy_var_1
happyReduce_18
=
happyReduce
6
12
happyReduction_18
happyReduction_18
(
_
`
HappyStk
`
(
HappyAbsSyn17
happy_var_5
)
`
HappyStk
`
_
`
HappyStk
`
(
HappyTerminal
(
TokenNat
_
happy_var_3
))
`
HappyStk
`
_
`
HappyStk
`
(
HappyAbsSyn12
happy_var_1
)
`
HappyStk
`
happyRest
)
=
HappyAbsSyn12
(
FuncCall
(
PredefFunc
RecordSelect
)
[]
(
happy_var_1
:
(
map
Types
.
Int
(
happy_var_3
:
happy_var_5
)))
)
`
HappyStk
`
happyRest
happyReduce_19
=
happyReduce
4
12
happyReduction_19
happyReduction_19
(
_
`
HappyStk
`
(
HappyAbsSyn16
happy_var_3
)
`
HappyStk
`
_
`
HappyStk
`
(
HappyAbsSyn13
happy_var_1
)
`
HappyStk
`
happyRest
)
=
HappyAbsSyn12
(
FuncCall
happy_var_1
[]
happy_var_3
)
`
HappyStk
`
happyRest
happyReduce_20
=
happySpecReduce_1
12
happyReduction_20
happyReduction_20
(
HappyTerminal
(
TokenString
_
happy_var_1
))
=
HappyAbsSyn12
(
Types
.
String
$
stripWhitespace
happy_var_1
)
happyReduction_
1
2
_
=
notHappyAtAll
happyReduction_2
0
_
=
notHappyAtAll
happyReduce_1
3
=
happySpecReduce_1
1
0
happyReduction_1
3
happyReduction_1
3
(
HappyTerminal
(
TokenVarName
happy_var_1
))
=
HappyAbsSyn1
0
happyReduce_
2
1
=
happySpecReduce_1
1
2
happyReduction_
2
1
happyReduction_
2
1
(
HappyTerminal
(
TokenVarName
_
happy_var_1
))
=
HappyAbsSyn1
2
(
Var
happy_var_1
)
happyReduction_1
3
_
=
notHappyAtAll
happyReduction_
2
1
_
=
notHappyAtAll
happyReduce_
14
=
happySpecReduce_1
1
0
happyReduction_
14
happyReduction_
14
(
HappyAbsSyn1
1
happy_var_1
)
=
HappyAbsSyn1
0
happyReduce_
22
=
happySpecReduce_1
1
2
happyReduction_
22
happyReduction_
22
(
HappyAbsSyn1
5
happy_var_1
)
=
HappyAbsSyn1
2
(
happy_var_1
)
happyReduction_
14
_
=
notHappyAtAll
happyReduction_
22
_
=
notHappyAtAll
happyReduce_
15
=
happySpecReduce_1
1
0
happyReduction_
15
happyReduction_
15
_
=
HappyAbsSyn1
0
happyReduce_
23
=
happySpecReduce_1
1
2
happyReduction_
23
happyReduction_
23
_
=
HappyAbsSyn1
2
(
Boolean
True
)
happyReduce_
16
=
happySpecReduce_1
1
0
happyReduction_
16
happyReduction_
16
_
=
HappyAbsSyn1
0
happyReduce_
24
=
happySpecReduce_1
1
2
happyReduction_
24
happyReduction_
24
_
=
HappyAbsSyn1
2
(
Boolean
False
)
happyReduce_17
=
happySpecReduce_3
11
happyReduction_17
happyReduction_17
_
(
HappyAbsSyn12
happy_var_2
)
happyReduce_25
=
happySpecReduce_1
13
happyReduction_25
happyReduction_25
(
HappyAbsSyn14
happy_var_1
)
=
HappyAbsSyn13
(
PredefFunc
happy_var_1
)
happyReduction_25
_
=
notHappyAtAll
happyReduce_26
=
happySpecReduce_1
13
happyReduction_26
happyReduction_26
(
HappyTerminal
(
TokenVarName
_
happy_var_1
))
=
HappyAbsSyn13
(
Var
happy_var_1
)
happyReduction_26
_
=
notHappyAtAll
happyReduce_27
=
happySpecReduce_1
14
happyReduction_27
happyReduction_27
_
=
HappyAbsSyn14
(
IsEmpty
)
happyReduce_28
=
happySpecReduce_1
14
happyReduction_28
happyReduction_28
_
=
HappyAbsSyn14
(
Contains
)
happyReduce_29
=
happySpecReduce_3
15
happyReduction_29
happyReduction_29
_
(
HappyAbsSyn16
happy_var_2
)
_
=
HappyAbsSyn1
1
=
HappyAbsSyn1
5
(
Record
happy_var_2
)
happyReduction_
17
_
_
_
=
notHappyAtAll
happyReduction_
29
_
_
_
=
notHappyAtAll
happyReduce_
18
=
happySpecReduce_1
1
2
happyReduction_
18
happyReduction_
18
(
HappyAbsSyn1
0
happy_var_1
)
=
HappyAbsSyn1
2
happyReduce_
30
=
happySpecReduce_1
1
6
happyReduction_
30
happyReduction_
30
(
HappyAbsSyn1
2
happy_var_1
)
=
HappyAbsSyn1
6
([
happy_var_1
]
)
happyReduction_
18
_
=
notHappyAtAll
happyReduction_
30
_
=
notHappyAtAll
happyReduce_1
9
=
happySpecReduce_3
1
2
happyReduction_1
9
happyReduction_1
9
(
HappyAbsSyn1
2
happy_var_3
)
happyReduce_
3
1
=
happySpecReduce_3
1
6
happyReduction_
3
1
happyReduction_
3
1
(
HappyAbsSyn1
6
happy_var_3
)
_
(
HappyAbsSyn10
happy_var_1
)
=
HappyAbsSyn12
(
HappyAbsSyn12
happy_var_1
)
=
HappyAbsSyn16
(
happy_var_1
:
happy_var_3
)
happyReduction_31
_
_
_
=
notHappyAtAll
happyReduce_32
=
happySpecReduce_1
17
happyReduction_32
happyReduction_32
(
HappyTerminal
(
TokenNat
_
happy_var_1
))
=
HappyAbsSyn17
([
happy_var_1
]
)
happyReduction_32
_
=
notHappyAtAll
happyReduce_33
=
happySpecReduce_3
17
happyReduction_33
happyReduction_33
(
HappyAbsSyn17
happy_var_3
)
_
(
HappyTerminal
(
TokenNat
_
happy_var_1
))
=
HappyAbsSyn17
(
happy_var_1
:
happy_var_3
)
happyReduction_
19
_
_
_
=
notHappyAtAll
happyReduction_
33
_
_
_
=
notHappyAtAll
happyNewToken
action
sts
stk
[]
=
action
33
33
notHappyAtAll
(
HappyState
action
)
sts
stk
[]
action
46
46
notHappyAtAll
(
HappyState
action
)
sts
stk
[]
happyNewToken
action
sts
stk
(
tk
:
tks
)
=
let
cont
i
=
action
i
i
tk
(
HappyState
action
)
sts
stk
tks
in
case
tk
of
{
TokenFilter
->
cont
13
;
TokenInSet
->
cont
14
;
TokenOutSet
->
cont
15
;
TokenSetName
happy_dollar_dollar
->
cont
16
;
TokenNat
happy_dollar_dollar
->
cont
17
;
TokenVarName
happy_dollar_dollar
->
cont
18
;
TokenTrue
->
cont
19
;
TokenFalse
->
cont
20
;
TokenString
happy_dollar_dollar
->
cont
21
;
TokenLeftSqBracket
->
cont
22
;
TokenRightSqBracket
->
cont
23
;
TokenArrow
->
cont
24
;
TokenisEqual
->
cont
25
;
TokenisNotEqual
->
cont
26
;
TokenLeftBracket
->
cont
27
;
TokenRightBracket
->
cont
28
;
TokenSemiCol
->
cont
29
;
TokenLambda
->
cont
30
;
TokenComma
->
cont
31
;
TokenFullStop
->
cont
32
;
TokenFilter
_
->
cont
18
;
TokenInSet
_
->
cont
19
;
TokenOutSet
_
->
cont
20
;
TokenSetName
_
happy_dollar_dollar
->
cont
21
;
TokenNat
_
happy_dollar_dollar
->
cont
22
;
TokenPosNat
_
happy_dollar_dollar
->
cont
23
;
TokenVarName
_
happy_dollar_dollar
->
cont
24
;
TokenTrue
_
->
cont
25
;
TokenFalse
_
->
cont
26
;
TokenString
_
happy_dollar_dollar
->
cont
27
;
TokenLeftSqBracket
_
->
cont
28
;
TokenRightSqBracket
_
->
cont
29
;
TokenArrow
_
->
cont
30
;
TokenisEqual
_
->
cont
31
;
TokenisNotEqual
_
->
cont
32
;
TokenLeftBracket
_
->
cont
33
;
TokenRightBracket
_
->
cont
34
;
TokenSemiCol
_
->
cont
35
;
TokenCol
_
->
cont
36
;
TokenLambda
_
->
cont
37
;
TokenComma
_
->
cont
38
;
TokenFullStop
_
->
cont
39
;
TokenPlus
_
->
cont
40
;
TokenXProduct
_
->
cont
41
;
TokenMap
_
->
cont
42
;
TokenXXProduct
_
->
cont
43
;
TokenContains
_
->
cont
44
;
TokenIsEmpty
_
->
cont
45
;
_
->
happyError'
((
tk
:
tks
),
[]
)
}
happyError_
explist
33
tk
tks
=
happyError'
(
tks
,
explist
)
happyError_
explist
46
tk
tks
=
happyError'
(
tks
,
explist
)
happyError_
explist
_
tk
tks
=
happyError'
((
tk
:
tks
),
explist
)
newtype
HappyIdentity
a
=
HappyIdentity
a
...
...
@@ -422,7 +662,10 @@ happySeq = happyDontSeq
parseError
::
[
Token
]
->
a
parseError
_
=
error
"Parse error"
parseError
tokens
=
error
$
"Parse error: "
++
(
show
.
pos
.
head
)
tokens
tokenPosn
::
Token
->
String
tokenPosn
t
=
let
(
AlexPn
_
line
col
)
=
pos
t
in
(
show
line
)
++
':'
:
(
show
col
)
{-# LINE 1 "templates/GenericTemplate.hs" #-}
-- $Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp $
...
...
This diff is collapsed.
Click to expand it.
Types.hs
+
1
−
1
View file @
1cbf18b2
...
...
@@ -11,7 +11,7 @@ data PredefFunc = XProduct | XXProduct | IsEqual | IsNotEqual | Plus --operators
|
Map
|
Filter
|
RecordIndex
-- [] operator
|
RecordSelect
|
IsEmpty
|
NotEmpty
|
Contains
|
IsSubString
-- string functions
|
IsEmpty
|
NotEmpty
|
Contains
-- string functions
deriving
(
Show
,
Eq
)
...
...
This diff is collapsed.
Click to expand it.
solutions/pr2.cql
+
2
−
1
View file @
1cbf18b2
...
...
@@ -2,4 +2,5 @@
A:3
.out
filter((r) -> isSubstring(r[1], r[2]));
\ No newline at end of file
filter( \(r) -> r[1] == r[2]);
map (\(r) -> r[3,1]);
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment