another arithmetic parser with variations on the theme
This commit is contained in:
parent
e462724482
commit
41275dfc71
@ -1 +0,0 @@
|
||||
/nix/store/yh4sq3dlkly5x6szw95xn5nlw4rn9xz3-ghc-shell-for-haskell-exps-0.1.0.0-0-env
|
||||
1
haskell-experiments/.direnv/nix-profile-.3928.2c3e5ec5df46
Symbolic link
1
haskell-experiments/.direnv/nix-profile-.3928.2c3e5ec5df46
Symbolic link
@ -0,0 +1 @@
|
||||
/nix/store/10mznhvw5lmlnm4qk4fxkqf05zapc087-ghc-shell-for-haskell-exps-0.1.0.0-0-env
|
||||
@ -7,15 +7,15 @@ AR='ar'
|
||||
export AR
|
||||
AS='as'
|
||||
export AS
|
||||
BASH='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash'
|
||||
BASH='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash'
|
||||
CC='gcc'
|
||||
export CC
|
||||
CONFIG_SHELL='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash'
|
||||
CONFIG_SHELL='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash'
|
||||
export CONFIG_SHELL
|
||||
CXX='g++'
|
||||
export CXX
|
||||
HOSTTYPE='x86_64'
|
||||
HOST_PATH='/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5/bin:/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18/bin:/nix/store/imad8dvhp77h0pjbckp6wvmnyhp8dpgg-coreutils-9.8/bin:/nix/store/av4xw9f56xlx5pgv862wabfif6m1yc0a-findutils-4.10.0/bin:/nix/store/20axvl7mgj15m23jgmnq97hx37fgz7bk-diffutils-3.12/bin:/nix/store/drc7kang929jaza6cy9zdx10s4gw1z5p-gnused-4.9/bin:/nix/store/x3zjxxz8m4ki88axp0gn8q8m6bldybba-gnugrep-3.12/bin:/nix/store/y2wdhdcrffp9hnkzk06d178hq3g98jay-gawk-5.3.2/bin:/nix/store/yi3c5karhx764ham5rfwk7iynr8mjf6q-gnutar-1.35/bin:/nix/store/d471xb7sfbah076s8rx02i68zpxc2r5n-gzip-1.14/bin:/nix/store/qm9rxn2sc1vrz91i443rr6f0vxm0zd82-bzip2-1.0.8-bin/bin:/nix/store/3fmzbq9y4m9nk235il7scmvwn8j9zy3p-gnumake-4.4.1/bin:/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin:/nix/store/qrwznp1ikdf0qw05wia2haiwi32ik5n0-patch-2.8/bin:/nix/store/v0rfdwhg6w6i0yb6dbry4srk6pnj3xp0-xz-5.8.1-bin/bin:/nix/store/paj6a1lpzp57hz1djm5bs86b7ci221r0-file-5.45/bin'
|
||||
HOST_PATH='/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5/bin:/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18/bin:/nix/store/iiishysy5bzkjrawxl4rld1s04qj0k0c-coreutils-9.8/bin:/nix/store/6hcyzg88adcz37hn5pslwb06ck6pnq07-findutils-4.10.0/bin:/nix/store/7ylvy12ylwy8wxya9i2ly8qkhiz7173r-diffutils-3.12/bin:/nix/store/rm3yhwgahfrmshmcrv6cr28x4rz7881s-gnused-4.9/bin:/nix/store/737jwbhw8ji13x9s88z3wpp8pxaqla92-gnugrep-3.12/bin:/nix/store/gh0ijwnyv6csn59yars8z8kxbnd31y8f-gawk-5.3.2/bin:/nix/store/l5ibq1yp8m7jibzgqbmpc46hkcnvv8fq-gnutar-1.35/bin:/nix/store/0hq8fc3ihp7clficpl72lxybfb23qvfc-gzip-1.14/bin:/nix/store/2xq4b1wjl6yklsqs86mf95lg9j8mbxvl-bzip2-1.0.8-bin/bin:/nix/store/bw02qy5hlr6a12p5f2apkk79204n20yh-gnumake-4.4.1/bin:/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin:/nix/store/mv1hg02434l28cf4vwg4qbrz2h967ms8-patch-2.8/bin:/nix/store/gq3243j1d8y6qgpcrgbbb0vxkbxzs0ix-xz-5.8.1-bin/bin:/nix/store/30k6wlj854gb3rw7ny2rj3fixn8xrx6p-file-5.45/bin'
|
||||
export HOST_PATH
|
||||
IFS='
|
||||
'
|
||||
@ -26,34 +26,34 @@ export LANG
|
||||
LD='ld'
|
||||
export LD
|
||||
LINENO='76'
|
||||
LOCALE_ARCHIVE='/nix/store/hjlkypp9lpxwzsjycpy7nqg2mnl7qhzv-glibc-locales-2.40-66/lib/locale/locale-archive'
|
||||
LOCALE_ARCHIVE='/nix/store/64zw8gswdqli6d5jcklisic0f3xgjjdd-glibc-locales-2.40-66/lib/locale/locale-archive'
|
||||
export LOCALE_ARCHIVE
|
||||
MACHTYPE='x86_64-pc-linux-gnu'
|
||||
NIX_BINTOOLS='/nix/store/xwydcyvlsa3cvssk0y5llgdhlhjvmqdm-binutils-wrapper-2.44'
|
||||
NIX_BINTOOLS='/nix/store/4dh4138m8gbp56kh63j2pwgsfhf5l8v7-binutils-wrapper-2.44'
|
||||
export NIX_BINTOOLS
|
||||
NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
|
||||
export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
|
||||
NIX_BUILD_CORES='24'
|
||||
export NIX_BUILD_CORES
|
||||
NIX_CC='/nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0'
|
||||
NIX_CC='/nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0'
|
||||
export NIX_CC
|
||||
NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
|
||||
export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
|
||||
NIX_CFLAGS_COMPILE=' -frandom-seed=yh4sq3dlkl'
|
||||
NIX_CFLAGS_COMPILE=' -frandom-seed=10mznhvw5l'
|
||||
export NIX_CFLAGS_COMPILE
|
||||
NIX_ENFORCE_NO_NATIVE='1'
|
||||
export NIX_ENFORCE_NO_NATIVE
|
||||
NIX_GHC='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/bin/ghc'
|
||||
NIX_GHC='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/bin/ghc'
|
||||
export NIX_GHC
|
||||
NIX_GHCPKG='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/bin/ghc-pkg'
|
||||
NIX_GHCPKG='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/bin/ghc-pkg'
|
||||
export NIX_GHCPKG
|
||||
NIX_GHC_DOCDIR='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/share/doc/ghc/html'
|
||||
NIX_GHC_DOCDIR='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/share/doc/ghc/html'
|
||||
export NIX_GHC_DOCDIR
|
||||
NIX_GHC_LIBDIR='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/lib/ghc-9.10.3/lib'
|
||||
NIX_GHC_LIBDIR='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/lib/ghc-9.10.3/lib'
|
||||
export NIX_GHC_LIBDIR
|
||||
NIX_HARDENING_ENABLE='bindnow format fortify fortify3 libcxxhardeningextensive libcxxhardeningfast pic relro stackclashprotection stackprotector strictoverflow zerocallusedregs'
|
||||
export NIX_HARDENING_ENABLE
|
||||
NIX_LDFLAGS='-rpath /home/felix/projects/pyrites/haskell-parsing/outputs/out/lib -L/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5/lib -L/nix/store/b9p0zpa93hwvh4d0r1rmgc2500yx2ldn-libffi-3.5.2/lib -L/nix/store/bkicgvyymba52ijm1z5zs96dsqqi59lp-elfutils-0.194/lib -L/nix/store/54jkwsavi3fdciqfyjmbilq0jhvv4jga-gmp-with-cxx-6.3.0/lib -L/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18/lib -L/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5/lib -L/nix/store/b9p0zpa93hwvh4d0r1rmgc2500yx2ldn-libffi-3.5.2/lib -L/nix/store/bkicgvyymba52ijm1z5zs96dsqqi59lp-elfutils-0.194/lib -L/nix/store/54jkwsavi3fdciqfyjmbilq0jhvv4jga-gmp-with-cxx-6.3.0/lib -L/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18/lib'
|
||||
NIX_LDFLAGS='-rpath /home/felix/projects/pyrites/haskell-experiments/outputs/out/lib -L/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5/lib -L/nix/store/c86nvwib4x4w4lkd3qw2aw40a354b6yd-libffi-3.5.2/lib -L/nix/store/v6v4r40nfy7inyr36yckidhi6ngh0k6p-elfutils-0.194/lib -L/nix/store/z658zzyxfc8106bjl5svssvsjvk513yj-gmp-with-cxx-6.3.0/lib -L/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18/lib -L/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5/lib -L/nix/store/c86nvwib4x4w4lkd3qw2aw40a354b6yd-libffi-3.5.2/lib -L/nix/store/v6v4r40nfy7inyr36yckidhi6ngh0k6p-elfutils-0.194/lib -L/nix/store/z658zzyxfc8106bjl5svssvsjvk513yj-gmp-with-cxx-6.3.0/lib -L/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18/lib'
|
||||
export NIX_LDFLAGS
|
||||
NIX_NO_SELF_RPATH='1'
|
||||
NIX_STORE='/nix/store'
|
||||
@ -68,14 +68,14 @@ OLDPWD=''
|
||||
export OLDPWD
|
||||
OPTERR='1'
|
||||
OSTYPE='linux-gnu'
|
||||
PATH='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/bin:/nix/store/ck6g9qnipfxipqraq6avjqayf01cax7s-hspec-discover-2.11.14/bin:/nix/store/5si9l7s9w09xi1wnfpf5r85am2shxz0i-haskell-language-server-2.12.0.0/bin:/nix/store/qvnkv8qa1z18nj573541i8182hpb80b0-cabal-install-3.16.0.0/bin:/nix/store/8q2582rd22xp8jlcg1xn1w219q5lx5xa-patchelf-0.15.2/bin:/nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0/bin:/nix/store/kzq78n13l8w24jn8bx4djj79k5j717f1-gcc-14.3.0/bin:/nix/store/q6wgv06q39bfhx2xl8ysc05wi6m2zdss-glibc-2.40-66-bin/bin:/nix/store/imad8dvhp77h0pjbckp6wvmnyhp8dpgg-coreutils-9.8/bin:/nix/store/xwydcyvlsa3cvssk0y5llgdhlhjvmqdm-binutils-wrapper-2.44/bin:/nix/store/dc9vaz50jg7mibk9xvqw5dqv89cxzla3-binutils-2.44/bin:/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5/bin:/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18/bin:/nix/store/imad8dvhp77h0pjbckp6wvmnyhp8dpgg-coreutils-9.8/bin:/nix/store/av4xw9f56xlx5pgv862wabfif6m1yc0a-findutils-4.10.0/bin:/nix/store/20axvl7mgj15m23jgmnq97hx37fgz7bk-diffutils-3.12/bin:/nix/store/drc7kang929jaza6cy9zdx10s4gw1z5p-gnused-4.9/bin:/nix/store/x3zjxxz8m4ki88axp0gn8q8m6bldybba-gnugrep-3.12/bin:/nix/store/y2wdhdcrffp9hnkzk06d178hq3g98jay-gawk-5.3.2/bin:/nix/store/yi3c5karhx764ham5rfwk7iynr8mjf6q-gnutar-1.35/bin:/nix/store/d471xb7sfbah076s8rx02i68zpxc2r5n-gzip-1.14/bin:/nix/store/qm9rxn2sc1vrz91i443rr6f0vxm0zd82-bzip2-1.0.8-bin/bin:/nix/store/3fmzbq9y4m9nk235il7scmvwn8j9zy3p-gnumake-4.4.1/bin:/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin:/nix/store/qrwznp1ikdf0qw05wia2haiwi32ik5n0-patch-2.8/bin:/nix/store/v0rfdwhg6w6i0yb6dbry4srk6pnj3xp0-xz-5.8.1-bin/bin:/nix/store/paj6a1lpzp57hz1djm5bs86b7ci221r0-file-5.45/bin'
|
||||
PATH='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/bin:/nix/store/xpq3c9bhlr1iby8kchf918salbf3zdpj-hspec-discover-2.11.14/bin:/nix/store/pkym0fzf9fn58wbkg41xbsgw83ngv49y-haskell-language-server-2.12.0.0/bin:/nix/store/w0y1r4k85x6a7i65sqmn4gdpb3z73wiv-cabal-install-3.16.0.0/bin:/nix/store/axrdk0z4gwqv9kpql2lgqq42l37m3yd1-patchelf-0.15.2/bin:/nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0/bin:/nix/store/m1k4nxs8r0fl0pjxqp5n37vxgms7gdlb-gcc-14.3.0/bin:/nix/store/ijmp8r14ivvzk5r95lwx49bbv089003g-glibc-2.40-66-bin/bin:/nix/store/iiishysy5bzkjrawxl4rld1s04qj0k0c-coreutils-9.8/bin:/nix/store/4dh4138m8gbp56kh63j2pwgsfhf5l8v7-binutils-wrapper-2.44/bin:/nix/store/v9zpzmigqkcjrw1jpf0zjc49y47cm55s-binutils-2.44/bin:/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5/bin:/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18/bin:/nix/store/iiishysy5bzkjrawxl4rld1s04qj0k0c-coreutils-9.8/bin:/nix/store/6hcyzg88adcz37hn5pslwb06ck6pnq07-findutils-4.10.0/bin:/nix/store/7ylvy12ylwy8wxya9i2ly8qkhiz7173r-diffutils-3.12/bin:/nix/store/rm3yhwgahfrmshmcrv6cr28x4rz7881s-gnused-4.9/bin:/nix/store/737jwbhw8ji13x9s88z3wpp8pxaqla92-gnugrep-3.12/bin:/nix/store/gh0ijwnyv6csn59yars8z8kxbnd31y8f-gawk-5.3.2/bin:/nix/store/l5ibq1yp8m7jibzgqbmpc46hkcnvv8fq-gnutar-1.35/bin:/nix/store/0hq8fc3ihp7clficpl72lxybfb23qvfc-gzip-1.14/bin:/nix/store/2xq4b1wjl6yklsqs86mf95lg9j8mbxvl-bzip2-1.0.8-bin/bin:/nix/store/bw02qy5hlr6a12p5f2apkk79204n20yh-gnumake-4.4.1/bin:/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin:/nix/store/mv1hg02434l28cf4vwg4qbrz2h967ms8-patch-2.8/bin:/nix/store/gq3243j1d8y6qgpcrgbbb0vxkbxzs0ix-xz-5.8.1-bin/bin:/nix/store/30k6wlj854gb3rw7ny2rj3fixn8xrx6p-file-5.45/bin'
|
||||
export PATH
|
||||
PS4='+ '
|
||||
RANLIB='ranlib'
|
||||
export RANLIB
|
||||
READELF='readelf'
|
||||
export READELF
|
||||
SHELL='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash'
|
||||
SHELL='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash'
|
||||
export SHELL
|
||||
SIZE='size'
|
||||
export SIZE
|
||||
@ -85,7 +85,7 @@ STRINGS='strings'
|
||||
export STRINGS
|
||||
STRIP='strip'
|
||||
export STRIP
|
||||
XDG_DATA_DIRS='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/share:/nix/store/qvnkv8qa1z18nj573541i8182hpb80b0-cabal-install-3.16.0.0/share:/nix/store/8q2582rd22xp8jlcg1xn1w219q5lx5xa-patchelf-0.15.2/share'
|
||||
XDG_DATA_DIRS='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/share:/nix/store/w0y1r4k85x6a7i65sqmn4gdpb3z73wiv-cabal-install-3.16.0.0/share:/nix/store/axrdk0z4gwqv9kpql2lgqq42l37m3yd1-patchelf-0.15.2/share'
|
||||
export XDG_DATA_DIRS
|
||||
__structuredAttrs=''
|
||||
export __structuredAttrs
|
||||
@ -94,14 +94,14 @@ buildCommandPath='/build/.attr-0l2nkwhif96f51f4amnlf414lhl4rv9vh8iffyp431v6s28gs
|
||||
export buildCommandPath
|
||||
buildInputs=''
|
||||
export buildInputs
|
||||
builder='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash'
|
||||
builder='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash'
|
||||
export builder
|
||||
cmakeFlags=''
|
||||
export cmakeFlags
|
||||
configureFlags=''
|
||||
export configureFlags
|
||||
defaultBuildInputs=''
|
||||
defaultNativeBuildInputs='/nix/store/8q2582rd22xp8jlcg1xn1w219q5lx5xa-patchelf-0.15.2 /nix/store/l2xk4ac1wx9c95kpp8vymv9r9yn57fvh-update-autotools-gnu-config-scripts-hook /nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh /nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh /nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh /nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh /nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh /nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0'
|
||||
defaultNativeBuildInputs='/nix/store/axrdk0z4gwqv9kpql2lgqq42l37m3yd1-patchelf-0.15.2 /nix/store/wy55v0yk13h90gcv0fffrisks128ziz1-update-autotools-gnu-config-scripts-hook /nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh /nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh /nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh /nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh /nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh /nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0'
|
||||
depsBuildBuild=''
|
||||
export depsBuildBuild
|
||||
depsBuildBuildPropagated=''
|
||||
@ -137,14 +137,14 @@ declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
|
||||
declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
|
||||
declare -a envTargetTargetHooks=()
|
||||
declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' )
|
||||
initialPath='/nix/store/imad8dvhp77h0pjbckp6wvmnyhp8dpgg-coreutils-9.8 /nix/store/av4xw9f56xlx5pgv862wabfif6m1yc0a-findutils-4.10.0 /nix/store/20axvl7mgj15m23jgmnq97hx37fgz7bk-diffutils-3.12 /nix/store/drc7kang929jaza6cy9zdx10s4gw1z5p-gnused-4.9 /nix/store/x3zjxxz8m4ki88axp0gn8q8m6bldybba-gnugrep-3.12 /nix/store/y2wdhdcrffp9hnkzk06d178hq3g98jay-gawk-5.3.2 /nix/store/yi3c5karhx764ham5rfwk7iynr8mjf6q-gnutar-1.35 /nix/store/d471xb7sfbah076s8rx02i68zpxc2r5n-gzip-1.14 /nix/store/qm9rxn2sc1vrz91i443rr6f0vxm0zd82-bzip2-1.0.8-bin /nix/store/3fmzbq9y4m9nk235il7scmvwn8j9zy3p-gnumake-4.4.1 /nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3 /nix/store/qrwznp1ikdf0qw05wia2haiwi32ik5n0-patch-2.8 /nix/store/v0rfdwhg6w6i0yb6dbry4srk6pnj3xp0-xz-5.8.1-bin /nix/store/paj6a1lpzp57hz1djm5bs86b7ci221r0-file-5.45'
|
||||
initialPath='/nix/store/iiishysy5bzkjrawxl4rld1s04qj0k0c-coreutils-9.8 /nix/store/6hcyzg88adcz37hn5pslwb06ck6pnq07-findutils-4.10.0 /nix/store/7ylvy12ylwy8wxya9i2ly8qkhiz7173r-diffutils-3.12 /nix/store/rm3yhwgahfrmshmcrv6cr28x4rz7881s-gnused-4.9 /nix/store/737jwbhw8ji13x9s88z3wpp8pxaqla92-gnugrep-3.12 /nix/store/gh0ijwnyv6csn59yars8z8kxbnd31y8f-gawk-5.3.2 /nix/store/l5ibq1yp8m7jibzgqbmpc46hkcnvv8fq-gnutar-1.35 /nix/store/0hq8fc3ihp7clficpl72lxybfb23qvfc-gzip-1.14 /nix/store/2xq4b1wjl6yklsqs86mf95lg9j8mbxvl-bzip2-1.0.8-bin /nix/store/bw02qy5hlr6a12p5f2apkk79204n20yh-gnumake-4.4.1 /nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3 /nix/store/mv1hg02434l28cf4vwg4qbrz2h967ms8-patch-2.8 /nix/store/gq3243j1d8y6qgpcrgbbb0vxkbxzs0ix-xz-5.8.1-bin /nix/store/30k6wlj854gb3rw7ny2rj3fixn8xrx6p-file-5.45'
|
||||
mesonFlags=''
|
||||
export mesonFlags
|
||||
name='ghc-shell-for-haskell-exps-0.1.0.0-0-env'
|
||||
export name
|
||||
nativeBuildInputs='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages /nix/store/5si9l7s9w09xi1wnfpf5r85am2shxz0i-haskell-language-server-2.12.0.0 /nix/store/qvnkv8qa1z18nj573541i8182hpb80b0-cabal-install-3.16.0.0'
|
||||
nativeBuildInputs='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages /nix/store/pkym0fzf9fn58wbkg41xbsgw83ngv49y-haskell-language-server-2.12.0.0 /nix/store/w0y1r4k85x6a7i65sqmn4gdpb3z73wiv-cabal-install-3.16.0.0'
|
||||
export nativeBuildInputs
|
||||
out='/home/felix/projects/pyrites/haskell-parsing/outputs/out'
|
||||
out='/home/felix/projects/pyrites/haskell-experiments/outputs/out'
|
||||
export out
|
||||
outputBin='out'
|
||||
outputDev='out'
|
||||
@ -161,11 +161,11 @@ passAsFile='buildCommand'
|
||||
export passAsFile
|
||||
patches=''
|
||||
export patches
|
||||
pkg='/nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0'
|
||||
pkg='/nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0'
|
||||
declare -a pkgsBuildBuild=()
|
||||
declare -a pkgsBuildHost=('/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages' '/nix/store/y4zpai8n4lljkbd37lm91vgclwy5mss1-hspec-core-2.11.14' '/nix/store/5hm98p022frdgmfrlfzdaxfm0l2imgxc-ansi-terminal-1.1.3' '/nix/store/v40i9pjr6dk0d1h29ljrf11lxx3d571z-ansi-terminal-types-1.1.3' '/nix/store/rl33wldyly5rwr7x8i2lrwgm4dvs9i5j-colour-2.3.6' '/nix/store/0hp69aq6457kpm2abplgm578rppvifz4-call-stack-0.4.0' '/nix/store/87il3qdxaj7gvm44xy53xn2ygl50f43g-haskell-lexer-1.2.1' '/nix/store/2757psbiqvr2afznk0n73mncdpgn7jib-hspec-expectations-0.8.4' '/nix/store/20c3fvkbm68yam91lsxqwgz3027l8zrx-HUnit-1.6.2.0' '/nix/store/9z62vq67hn3q1h7h3g9z7vrgki53vj52-QuickCheck-2.15.0.1' '/nix/store/2w524dah1f344sppc7y9gm928r8j4p3l-random-1.2.1.3' '/nix/store/qwmgqkmvdigbbhc32aq4jqjlxfhjnh3b-splitmix-0.1.3.1' '/nix/store/b1i2xc46c5vsygxslad1fc8w83161fn8-quickcheck-io-0.2.0' '/nix/store/3xc5iiww5vhxn62z3wsi449332cyj6kn-tf-random-0.5' '/nix/store/xrz27qsmayzy18c80ckr4xzpjsn28n3f-primitive-0.9.1.0' '/nix/store/ck6g9qnipfxipqraq6avjqayf01cax7s-hspec-discover-2.11.14' '/nix/store/5si9l7s9w09xi1wnfpf5r85am2shxz0i-haskell-language-server-2.12.0.0' '/nix/store/qvnkv8qa1z18nj573541i8182hpb80b0-cabal-install-3.16.0.0' '/nix/store/8q2582rd22xp8jlcg1xn1w219q5lx5xa-patchelf-0.15.2' '/nix/store/l2xk4ac1wx9c95kpp8vymv9r9yn57fvh-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0' '/nix/store/xwydcyvlsa3cvssk0y5llgdhlhjvmqdm-binutils-wrapper-2.44' )
|
||||
declare -a pkgsBuildHost=('/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages' '/nix/store/3if09zz5yh2xp06k74df4ffllcq242v4-hspec-core-2.11.14' '/nix/store/15kpl1k04j2734jpxxn3822yj0l40j4n-ansi-terminal-1.1.3' '/nix/store/hg3dyhm276hkzqbp6grcaryq9db8yiq0-ansi-terminal-types-1.1.3' '/nix/store/86g9qx4iixnzfl2pn14mgfhjrc7ys3bp-colour-2.3.6' '/nix/store/l7wqc6ylsgxnryqq6adxy33f887yff38-call-stack-0.4.0' '/nix/store/8ca4l9p89fnj897pqkhqz8grgv67al3n-haskell-lexer-1.2.1' '/nix/store/y7zpz5zp7sr8fyb8g03hrp1h2nvyg6wl-hspec-expectations-0.8.4' '/nix/store/djlag105fka13zx06xk909grhzzd8sl4-HUnit-1.6.2.0' '/nix/store/vbgfxw3pjdq8k1w71wc0lf7ylp2c85ya-QuickCheck-2.15.0.1' '/nix/store/zpskiivq0xq3k45dcr697fgm2vkydcn1-random-1.2.1.3' '/nix/store/fpk42za9sgq0a2x3waizix007wq2s7m4-splitmix-0.1.3.1' '/nix/store/hq5260px20y1ym58rr8a0w1hfc31gkjd-quickcheck-io-0.2.0' '/nix/store/5l29zzwfq7qkya578zcsbqzm6vqpllrw-tf-random-0.5' '/nix/store/x87fdsm1a9ggy746dlsa21g1qysj0p2x-primitive-0.9.1.0' '/nix/store/xpq3c9bhlr1iby8kchf918salbf3zdpj-hspec-discover-2.11.14' '/nix/store/pkym0fzf9fn58wbkg41xbsgw83ngv49y-haskell-language-server-2.12.0.0' '/nix/store/w0y1r4k85x6a7i65sqmn4gdpb3z73wiv-cabal-install-3.16.0.0' '/nix/store/axrdk0z4gwqv9kpql2lgqq42l37m3yd1-patchelf-0.15.2' '/nix/store/wy55v0yk13h90gcv0fffrisks128ziz1-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0' '/nix/store/4dh4138m8gbp56kh63j2pwgsfhf5l8v7-binutils-wrapper-2.44' )
|
||||
declare -a pkgsBuildTarget=()
|
||||
declare -a pkgsHostHost=('/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5' '/nix/store/b9p0zpa93hwvh4d0r1rmgc2500yx2ldn-libffi-3.5.2' '/nix/store/bkicgvyymba52ijm1z5zs96dsqqi59lp-elfutils-0.194' '/nix/store/54jkwsavi3fdciqfyjmbilq0jhvv4jga-gmp-with-cxx-6.3.0' '/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18' )
|
||||
declare -a pkgsHostHost=('/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5' '/nix/store/c86nvwib4x4w4lkd3qw2aw40a354b6yd-libffi-3.5.2' '/nix/store/v6v4r40nfy7inyr36yckidhi6ngh0k6p-elfutils-0.194' '/nix/store/z658zzyxfc8106bjl5svssvsjvk513yj-gmp-with-cxx-6.3.0' '/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18' )
|
||||
declare -a pkgsHostTarget=()
|
||||
declare -a pkgsTargetTarget=()
|
||||
declare -a postFixupHooks=('noBrokenSymlinksInAllOutputs' '_makeSymlinksRelativeInAllOutputs' '_multioutPropagateDev' )
|
||||
@ -173,7 +173,7 @@ declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' )
|
||||
declare -a preConfigureHooks=('_multioutConfig' )
|
||||
preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase'
|
||||
declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' )
|
||||
prefix='/home/felix/projects/pyrites/haskell-parsing/outputs/out'
|
||||
prefix='/home/felix/projects/pyrites/haskell-experiments/outputs/out'
|
||||
declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' )
|
||||
propagatedBuildInputs=''
|
||||
export propagatedBuildInputs
|
||||
@ -181,11 +181,11 @@ declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build
|
||||
propagatedNativeBuildInputs=''
|
||||
export propagatedNativeBuildInputs
|
||||
declare -a propagatedTargetDepFiles=('propagated-target-target-deps' )
|
||||
shell='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash'
|
||||
shell='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash'
|
||||
export shell
|
||||
shellHook='unset TEMP TMP TEMPDIR TMPDIR'
|
||||
export shellHook
|
||||
stdenv='/nix/store/s3w5m3spa1g71hx0yb82lvk6394j3w5j-stdenv-linux'
|
||||
stdenv='/nix/store/45wimpzmh2rkgagv1r42q9v73cpdfr58-stdenv-linux'
|
||||
export stdenv
|
||||
strictDeps=''
|
||||
export strictDeps
|
||||
@ -2101,7 +2101,7 @@ updateAutotoolsGnuConfigScriptsPhase ()
|
||||
for f in $(find . -type f -name "$script");
|
||||
do
|
||||
echo "Updating Autotools / GNU config script to a newer upstream version: $f";
|
||||
cp -f "/nix/store/1kzclixw4c13wxin0b6cij1zykvwp0wb-gnu-config-2024-01-01/$script" "$f";
|
||||
cp -f "/nix/store/yhwnzyhfqd9ficmxmbbryp2s8ymkzmdf-gnu-config-2024-01-01/$script" "$f";
|
||||
done;
|
||||
done
|
||||
}
|
||||
@ -79,12 +79,13 @@ test-suite haskell-exps-test
|
||||
-- Test dependencies.
|
||||
build-depends: base, hspec, langfeatures, megaparsec
|
||||
other-modules: Test.OlogsSpec,
|
||||
Test.SimpleParserSpec
|
||||
Test.SimpleParserSpec,
|
||||
Test.ArithmeticParserSpec
|
||||
|
||||
library langfeatures
|
||||
build-depends: base, containers, megaparsec, parser-combinators
|
||||
build-depends: base, containers, megaparsec, parser-combinators, text
|
||||
hs-source-dirs: src
|
||||
exposed-modules: Ologs, SimpleParser
|
||||
exposed-modules: Ologs, SimpleParser, ArithmeticParser
|
||||
ghc-options: -Wall
|
||||
|
||||
executable haskell-experiments
|
||||
|
||||
111
haskell-experiments/src/ArithmeticParser.hs
Normal file
111
haskell-experiments/src/ArithmeticParser.hs
Normal file
@ -0,0 +1,111 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module ArithmeticParser where
|
||||
|
||||
import Text.Megaparsec
|
||||
import Text.Megaparsec.Char
|
||||
import qualified Text.Megaparsec.Char.Lexer as L
|
||||
import Data.Void
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
|
||||
-- Type aliases for convenience
|
||||
type Parser = Parsec Void Text
|
||||
|
||||
-- ┌───────────────────────────────┐
|
||||
-- │ AST Definition │
|
||||
-- └───────────────────────────────┘
|
||||
data Expr
|
||||
= ENumber Integer -- 42, -7, etc.
|
||||
| EAdd Expr Expr
|
||||
| ESub Expr Expr
|
||||
| EMul Expr Expr
|
||||
| EDiv Expr Expr
|
||||
deriving (Show, Eq)
|
||||
|
||||
-- ┌───────────────────────────────┐
|
||||
-- │ Basic lexemes │
|
||||
-- └───────────────────────────────┘
|
||||
|
||||
-- Skip spaces & newlines
|
||||
sc :: Parser ()
|
||||
sc = L.space space1 lineComment blockComment
|
||||
where
|
||||
lineComment = L.skipLineComment "--"
|
||||
blockComment = L.skipBlockComment "{-" "-}"
|
||||
|
||||
-- Lexeme: consume sc after token
|
||||
lexeme :: Parser a -> Parser a
|
||||
lexeme = L.lexeme sc
|
||||
|
||||
-- Symbols we care about
|
||||
symbol :: Text -> Parser Text
|
||||
symbol = L.symbol sc
|
||||
|
||||
parens :: Parser a -> Parser a
|
||||
parens = between (symbol "(") (symbol ")")
|
||||
|
||||
integer :: Parser Integer
|
||||
integer = lexeme L.decimal
|
||||
|
||||
signedInteger :: Parser Integer
|
||||
signedInteger = L.signed sc integer
|
||||
|
||||
-- ┌───────────────────────────────┐
|
||||
-- │ Expression levels │
|
||||
-- └───────────────────────────────┘
|
||||
|
||||
-- Lowest precedence: numbers & parenthesized expressions
|
||||
term :: Parser Expr
|
||||
term = number
|
||||
<|> parens expr
|
||||
|
||||
number :: Parser Expr
|
||||
number = ENumber <$> signedInteger
|
||||
|
||||
-- Multiplication & division (left-associative)
|
||||
factor :: Parser Expr
|
||||
factor = term `chainl1` mulOrDiv
|
||||
where
|
||||
mulOrDiv = EMul <$ symbol "*"
|
||||
<|> EDiv <$ symbol "/"
|
||||
|
||||
-- Addition & subtraction (left-associative)
|
||||
expr :: Parser Expr
|
||||
expr = factor `chainl1` addOrSub
|
||||
where
|
||||
addOrSub = EAdd <$ symbol "+"
|
||||
<|> ESub <$ symbol "-"
|
||||
|
||||
-- ┌───────────────────────────────┐
|
||||
-- │ Main parser │
|
||||
-- └───────────────────────────────┘
|
||||
|
||||
parseExpr :: Text -> Either (ParseErrorBundle Text Void) Expr
|
||||
parseExpr input =
|
||||
parse (sc *> expr <* eof) "<input>" input
|
||||
|
||||
-- ┌───────────────────────────────┐
|
||||
-- │ Helpful chainl1 alias │
|
||||
-- └───────────────────────────────┘
|
||||
chainl1 :: Parser a -> Parser (a -> a -> a) -> Parser a
|
||||
chainl1 p op = do
|
||||
x <- p
|
||||
rest x
|
||||
where
|
||||
rest x = (do f <- op; y <- p; rest (f x y)) <|> pure x
|
||||
|
||||
-- ┌───────────────────────────────┐
|
||||
-- │ Examples │
|
||||
-- └───────────────────────────────┘
|
||||
examples :: [(Text, Maybe Expr)]
|
||||
examples =
|
||||
[ ("42", Just $ ENumber 42)
|
||||
, ("-7 + 3", Just $ EAdd (ENumber (-7)) (ENumber 3))
|
||||
, ("2 * (3 + 4)", Just $ EMul (ENumber 2) (EAdd (ENumber 3) (ENumber 4)))
|
||||
, ("10 - 2 * 3", Just $ ESub (ENumber 10) (EMul (ENumber 2) (ENumber 3)))
|
||||
, ("(8 / 2) + 1", Just $ EAdd (EDiv (ENumber 8) (ENumber 2)) (ENumber 1))
|
||||
, ("", Nothing)
|
||||
, ("5 +", Nothing) -- incomplete
|
||||
, ("2 ** 3", Nothing) -- ** not supported
|
||||
]
|
||||
@ -3,11 +3,11 @@ import Test.Hspec
|
||||
|
||||
import qualified Test.OlogsSpec as Ologs
|
||||
import qualified Test.SimpleParserSpec as SimpleParserSpec
|
||||
--import Test.FooSpec
|
||||
import qualified Test.ArithmeticParserSpec as ArithmeticParserSpec
|
||||
|
||||
main :: IO ()
|
||||
main = hspec $ do
|
||||
describe "Ologs" Ologs.spec
|
||||
describe "SimpleParser" SimpleParserSpec.spec
|
||||
-- describe "My amazing tests" [ FastLaneSpec FooSpec ]
|
||||
describe "ArithmeticParser" ArithmeticParserSpec.spec
|
||||
|
||||
|
||||
30
haskell-experiments/test/Test/ArithmeticParserSpec.hs
Normal file
30
haskell-experiments/test/Test/ArithmeticParserSpec.hs
Normal file
@ -0,0 +1,30 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE DuplicateRecordFields #-}
|
||||
{-# LANGUAGE OverloadedRecordDot #-}
|
||||
{-# HLINT ignore "Use const" #-}
|
||||
{-# HLINT ignore "Unused LANGUAGE pragma" #-}
|
||||
{-# HLINT ignore "Avoid lambda" #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
{-# LANGUAGE NoFieldSelectors #-}
|
||||
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Test.ArithmeticParserSpec where
|
||||
|
||||
import Test.Hspec
|
||||
|
||||
import ArithmeticParser
|
||||
|
||||
spec :: Spec
|
||||
spec = do
|
||||
describe "evaluate expressions" $ do
|
||||
it "with basic arithmetic on literals" $ do
|
||||
parseExpr "42" `shouldBe` Right (ENumber 42)
|
||||
parseExpr "-7 + 3" `shouldBe` Right ( EAdd (ENumber (-7)) (ENumber 3))
|
||||
parseExpr "2 * (3 + 4)" `shouldBe` Right ( EMul (ENumber 2) (EAdd (ENumber 3) (ENumber 4)))
|
||||
parseExpr "10 - 2 * 3" `shouldBe` Right (ESub (ENumber 10) (EMul (ENumber 2) (ENumber 3)))
|
||||
parseExpr "(8 / 2) + 1" `shouldBe` Right (EAdd (EDiv (ENumber 8) (ENumber 2)) (ENumber 1))
|
||||
parseExpr "2 + 3 * (10 - 4)" `shouldBe` Right (EAdd (ENumber 2) (EMul (ENumber 3) (ESub (ENumber 10) (ENumber 4))))
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user