From 031803cbad9aa4719dd646619085212860998460 Mon Sep 17 00:00:00 2001 From: jorenchik Date: Sun, 29 Sep 2024 11:13:56 +0300 Subject: [PATCH] parser supports all needed question types --- src/cpp/include/parser.h | 13 +- .../index/main.cpp.6DE93E662B25E657.idx | Bin 16250 -> 0 bytes .../mocs_compilation.cpp.24E22B09DF7BB0D0.idx | Bin 556 -> 0 bytes src/cpp/qtapp/.gitignore | 1 + src/cpp/qtapp/main.cpp | 2 +- .../clangd/index/api.cpp.00DF3E88855FBE2C.idx | Bin 1732 -> 0 bytes .../clangd/index/api.h.09188030E1E1AD2B.idx | Bin 184 -> 0 bytes .../index/config.h.37161B9BC74F84AB.idx | Bin 224 -> 0 bytes .../index/lexer.cpp.83041CDDE7BB82EA.idx | Bin 6334 -> 0 bytes .../clangd/index/lexer.h.56AED8998E88A18A.idx | Bin 1788 -> 0 bytes .../index/main.cpp.3110054129CACA6D.idx | Bin 1808 -> 0 bytes .../index/parser.cpp.1DA6C31FD012A889.idx | Bin 7840 -> 0 bytes .../index/parser.h.A6B071E84CF21EB1.idx | Bin 1870 -> 0 bytes .../index/result.h.9FDF8FE2A27152FF.idx | Bin 616 -> 0 bytes .../index/time.cpp.D8F4534350FEB86F.idx | Bin 562 -> 0 bytes .../clangd/index/time.h.A5DECF25CDA82FFC.idx | Bin 600 -> 0 bytes src/cpp/transpiler/.gitignore | 1 + src/cpp/transpiler/lexer.cpp | 11 +- src/cpp/transpiler/parser.cpp | 164 +++++++++++++----- 19 files changed, 143 insertions(+), 49 deletions(-) delete mode 100644 src/cpp/qtapp/.cache/clangd/index/main.cpp.6DE93E662B25E657.idx delete mode 100644 src/cpp/qtapp/.cache/clangd/index/mocs_compilation.cpp.24E22B09DF7BB0D0.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/api.cpp.00DF3E88855FBE2C.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/api.h.09188030E1E1AD2B.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/config.h.37161B9BC74F84AB.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/lexer.cpp.83041CDDE7BB82EA.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/lexer.h.56AED8998E88A18A.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/main.cpp.3110054129CACA6D.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/parser.cpp.1DA6C31FD012A889.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/parser.h.A6B071E84CF21EB1.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/result.h.9FDF8FE2A27152FF.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/time.cpp.D8F4534350FEB86F.idx delete mode 100644 src/cpp/transpiler/.cache/clangd/index/time.h.A5DECF25CDA82FFC.idx diff --git a/src/cpp/include/parser.h b/src/cpp/include/parser.h index d903182..2f2c224 100644 --- a/src/cpp/include/parser.h +++ b/src/cpp/include/parser.h @@ -8,6 +8,10 @@ struct Question { + std::string ID; + std::string QuestionText; + std::string Section; + virtual std::string ToString() const = 0; virtual ~Question() = default; }; @@ -24,23 +28,18 @@ enum MultiElementType { }; struct MultiElementQuestion : public Question { - std::string ID; - std::string QuestionText; std::vector Choices; - std::string Section; MultiElementType type; std::string ToString() const override; }; struct Group { - std::string name; - std::string elements; + std::string name; + std::vector elements; }; struct GroupQuestion : public Question { - std::string ID; - std::string QuestionText; std::vector Groups; std::string ToString() const override; diff --git a/src/cpp/qtapp/.cache/clangd/index/main.cpp.6DE93E662B25E657.idx b/src/cpp/qtapp/.cache/clangd/index/main.cpp.6DE93E662B25E657.idx deleted file mode 100644 index e73b53fc5f6c668cdb7390abadba54003113ea51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16250 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 diff --git a/src/cpp/qtapp/.cache/clangd/index/mocs_compilation.cpp.24E22B09DF7BB0D0.idx b/src/cpp/qtapp/.cache/clangd/index/mocs_compilation.cpp.24E22B09DF7BB0D0.idx deleted file mode 100644 index 2d8665151206d2948e8d3ea24ffe7418b13f1944..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmWIYbaPW-VqkDi@vO*AElFfyU|Y9rF$u2z;qmN|*lH z5Yp+)Y0?$qmFXy>o2=hC`-WdG`_%i_Gbc>Y;`?%;d+p5F^Kbe%m$n4Gydo%jHSEzA zFCnMruX#_0=W~CHIp-FVbDFy%a^ugWZMtq-w4WbM`fNANd&OF}9~=03SA;TGim>Vi zMwc_aXX#kieEz`WoiaC%uS?#;zs-sHRL8dI9xD{Se29A1qE-Ki(RAUofcAUe{1m31 z@~xL%x>j@#YkYBgLZ4UjvwKo6c4Snv%DJ5ORXs0$TJ2?Q75~~>{X8kcPPG#*pZelC zDfP)W*MAqPa?^8L(+|D!+iIhc9c1Y7?cTvSNr``t+2<_owAydD##wIf`U|e>*KM#? z)#j;N!^7wjX1>q)p|Z(eaao_ws`(#0w;Jv|eIe85-!<7FZ@!N|nGe`MNfuD;o_oUS zEU&TIl~W-{+!q(?Tlw!}oM+EsQe2svWCsjiah?4s*97MTurf#jIZUif!e9a@0|xHv z_4nsXDoo^OkN`=GG3kH_m~>HUTCpCG12ct@3#)FBFi0!ZuA& questions) { }; for (size_t i = 0; i < questions.size(); ++i) { - if (AnswerQuestion* mw = dynamic_cast(questions[i])) { + if (MultiElementQuestion* mw = dynamic_cast(questions[i])) { mdems[i]->wFrontText->setText( QString::fromStdString(mw->QuestionText) ); diff --git a/src/cpp/transpiler/.cache/clangd/index/api.cpp.00DF3E88855FBE2C.idx b/src/cpp/transpiler/.cache/clangd/index/api.cpp.00DF3E88855FBE2C.idx deleted file mode 100644 index 023458354fc50da40300b6bdfeccf5e5569d5484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1732 zcmYjQ3rtgI6uxb53vK`2w$R!qw=bl$1zM3Y2u6GX)(xD9FEVjx5k^~eEzYVq5;Ph` zWZ>%1YNVoWxQL(xoUaTv3FxAv0`Y}T*Te@CM4j))ZoB-q{>i=hzH`6x_|G{v*PNMo zhJhf{EoPU!sH_l05F~kSicAZtSO#`dNSt)Ir$ch}Py z8=G5-$||IbPF>Hp^v-mY=-!REA01*2GpeiOcAtK6@XeUTkzBED?y&2jR+A^Z$=+%` zD%Za#m;AZEuB|_xA-~wXZnC!cLuUaa>}o1=diqIzT2f(SYV(ovm7A7$2RU6U?O(L! z+X^2o?ptMRTZ>x7E$wt~{XZ#nk40|Z<(Geff2~z}^;$9WU0-xk$?9V9<}d39Zl`7C zPSke}_A7thSJL2}Zz$2-@Uh}e=6UBo#ATEV;~Q&~8L9cob87G9vUyD_T4(O^FRp!) z;`+w<-X9?_buVb`*TTXglu z#-7KQ?tFTw?|r}R+oun2`8URUhKBxlclu`fbh)P-Oit^n(OFJZ-8wtl-!nRJXZ@rp z$>uv9y55G#mD_d}?AHCJtCZ;%&0d;#bR^@G+PJaK4u`bkPYH-fqJ*)VcEA|W?I8ycgN7df_`?#SN`mz>?0gR zO$gXVc9H^3M$t0UCX5Szf95CK_UPK5S; z?Ibz{;26M2v-gg*`dVoUgNg?0g*QNh*Mk>MmE*jE@QW%cz{TNW42A@FOn3~*N}KYK zOmnf8ND#@5ltEE+j=Hz(9(sA1h_p6n;G+Vn?$RKI&*RNPvxi zRw^qv*HA;a6fOfMx4LZC9IuuiBO(bSgkoq0xJIBM*XS@da{O@3FD*1;Nby`#NW?Sn z5<<*qFp_Lx`%vyucUNnmJqSjogWFHk6j=RGO?(QU6v2oTR&f2H$biq#EZ61vh*IS& zIR~l$t_ON9WD_3@renS{R|0t>F><6QGu^J{Dfg~YP~5~a;ZVK(;I5&SDZ8UXUZ>;EHz070Z7 zs0=|x2u6jVDg-4Yq~KN3#)V4`))a-Sl#(c!Tp>l4*)29Mp};s?lnxkS;Vd4LP2(W{ E0UxwhumAu6 diff --git a/src/cpp/transpiler/.cache/clangd/index/api.h.09188030E1E1AD2B.idx b/src/cpp/transpiler/.cache/clangd/index/api.h.09188030E1E1AD2B.idx deleted file mode 100644 index 3babb38c41deeba3898087ffff0488da77c25529..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmWIYbaUIlz`)>~;#rZKT9U{DWD5ataY<2TFp%B{#1(Vqo<1nppuof8p!Mlr-P)E$ ziv>&kglUz*9ObkpQ L5eQ(0F&G#C3XV7c diff --git a/src/cpp/transpiler/.cache/clangd/index/config.h.37161B9BC74F84AB.idx b/src/cpp/transpiler/.cache/clangd/index/config.h.37161B9BC74F84AB.idx deleted file mode 100644 index cbe0f8761712eb26ffcb55c0763a439657d26382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmWIYbaT7Gz`)>~;#rZKT9U{DWD5ataY<2T6p)?(#1(Vqo<1$upuod=AmqsI>a9W? z4;MSlSirt}y40R`XMzIuc5HVDJTzJJs<#<~>+A;slg}-kcf*t`YRa;2Nm9+n59IDU zzp<%t>+)H#KY!0&e^+-gzw2`2{^H8qBt@XT$V@$ diff --git a/src/cpp/transpiler/.cache/clangd/index/lexer.cpp.83041CDDE7BB82EA.idx b/src/cpp/transpiler/.cache/clangd/index/lexer.cpp.83041CDDE7BB82EA.idx deleted file mode 100644 index a4c1a2a96b666bc4f86faaaafce6e6a59c4f859c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6334 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 diff --git a/src/cpp/transpiler/.cache/clangd/index/lexer.h.56AED8998E88A18A.idx b/src/cpp/transpiler/.cache/clangd/index/lexer.h.56AED8998E88A18A.idx deleted file mode 100644 index 75fe5a46993a95df258dc5729711b0c28fdfceff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 zcmYL|e^3-<7{}k+Tkg2Kz1_V#VDI+s;Kl}!YB~zi5K&9OK}Q+rGSX(`r~FWmj%%O+ z!sy0Gl=3FS@dxswl&f??NvACBGL0caqJSn9WJrY|RHjVo4}15;r`?(R&fa&w&-1>| zyPwTWOHKV#h0x0Uw5rkqPY#U`GU8u_$6dT!flw`lP}RXhnHg)&$MSvYmaKy6mwveu zvn%6geNF%5z~31ISH$M18@`Dn_ea+r=nIWV_P%?ycC@zHxvD32ZeMIp_p8b&?Zr=4 z`YYf3_?YX{d*bx12BvO&ReoD5^~a2Rqr15yQIXzzh3&ska)!~mH_^|PMP@r0kF(KN z$PJ}+Sj+T7k1gJEyDn&q>3iy=I_a?K>;_|a>+uu1x6=*mX$DQ@nJ%_!4cr&5VNQ|AZ%3I(L3K&9GF25s3mT2t?pVZ2RND&iO2!EVBW+X@k?V^tje4wxrWTe8 z$MqJ*!V!V`CsoS&my62%98%(XEv*e9BG+dNLfXXK?T=KH0iQvbI*cJg0tn#|U3cO( zPu=%+afrhmg6UwMh}_}*&xbDe_!pnxkO~JFnqi5^fwMCm>kqzA72ptq0|wf_5|IOi zZ*_W)`tJo;%7SMw^Jakv%&@n7dSiFV(S8omxL!x=LWs!qO`$)0=v-IyBZq=*sZPF8w1N*(!;s&?*E{9kg;Ax&GA_tJWU~@$qCf2pi7(KCP zX^?^u9gM>W2m;6o4FMQV6#!Of3AkWG6;2aiAJPlBVq3x#(n@!AV#4{G%PB^*&=wuM zaYhtrQ3w10%S!D$!w*|BqCg9J*ajooqwG#t2I$6{lhB3^z%;fcpuv7#lk!z*0pCP3 zqFH0+;GHp|O=II=e7pc}4}%5p5yd$YU|9GRa9`;=fW9yQwk7&uXaFDE67`UV;jt~T z4r#y~+Y;lDhR2k49_s%O#bI)oVP60^u9fJ9+N@L8GIRHS(hX8%_z^64tOEAR5~e&X5LcMl ztk_zArbg>;)zR3>X#547T9rC7f)*U0mO73VX-nx?E9z9GbnJ$9FS;|gv)}i=_xA03 zdv|#=+-^dKVN;7|_$xijif|0WIQaOMdCN>94AV+5%)e{*+$&2i+Cf+Qqv8Xfc4qC} zlq*?nc>msUOGopq*KDs=Wj{MtK1dyu9XeKeskFpsK6tw0hGX}pqT)9uKGYXf-Odr^jGt);tg4T_ysmHak)LaB1vl^N;0nu{cZ{w2a?-$G z?|D=wPKuViGctC!CF_)PtmQgWe~}vB-SxEnQODA&tv9pwUX+RdaQCMTR&EOh3qxJ| zTRd$Aa%pkDyM?GaeZTMUqQkT-$G)>+X-KCw*Ht$p6^@dgl{Ge(99uK9I`AOm zeD;+w{?4?=D|$j_Zhkj7MSLUuq-$K`9$#zj=l-hs?$$E$>HO(#{kE6mZGF^dd520? zZYdoadiVEH1+{dSZ$;%>lVQDT+v87XTLMiqro%80jYkv16SNGE@?icM)z=q#X>0^E zlQgLwo{-t=De(=$(!0~^4*WU#dy$9+6iF$OSF7HChxD^j5e|}7$y&76<7?Kj^nJiW zwVah}kh;yhvbJV&zCug`^K^4AQqzEsr8?<*)?`yyHnM+UX$MIfG039CI#|UR;RCT z+mV?L)x3@uf}9_p|3%U-pJYO{L+2Qc)Uo{wx=t?QXNqwUCyx`d#DPU_5zySu_UzkB zAI*WjTDg`(Mak}}i>`dq`8uR&mKG`-Pc6+(m_2VHOdwI5NTHpYawaaD*wkAdR=emF z6y#z3JidF{IbZm2V!ITn54DXfRX&-p9MZ|UaG(GR9SVX2IMflO zXY?B6Vp(gDbxxeB^@6(bHq@BPiT{PUNIMvZkkGa^dC zQ#gdYo{FOI*U;x(?0Yl3(1fS|h8is}5wH&Q^vpQw|3RkGsI{C@G5oXo->wvNm^QLh cM3$<^a&cvGMc6_!j95b9(kOzJks>+vFG;~~ssI20 diff --git a/src/cpp/transpiler/.cache/clangd/index/parser.cpp.1DA6C31FD012A889.idx b/src/cpp/transpiler/.cache/clangd/index/parser.cpp.1DA6C31FD012A889.idx deleted file mode 100644 index f1ff5367ad1d21e0665180a2b1f0447e886606a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7840 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 diff --git a/src/cpp/transpiler/.cache/clangd/index/parser.h.A6B071E84CF21EB1.idx b/src/cpp/transpiler/.cache/clangd/index/parser.h.A6B071E84CF21EB1.idx deleted file mode 100644 index 903df12b68a76d76e3c367a290a1277d50495f92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1870 zcmYL|e@t6d6vuC0N88sv`d&+Uw}lsKe~g-nIu&q&3tKiYfKXP3EZZVKW*J*n=je=# zZrS9=Uvpy!lW3*^0|tedk&L+n>J+UEmyA(xnK0*^WP(oE1Or5(-uLJ!O?qB?eth3K z=YFm`J1Z+oiO|;9va7wGBW3FlLVEJ`9jV%%DnlqpAyj?7v&oe!e})UrZ|8S){@LCh zEPVXhfxtpr*JOXv%=qcNW=~>w?C8ks!No>@fuUjZ;J|WV=;d!Km(mI+($%_#({5K= z-B561?yKPF{;t<+;!lmbHtjt;J8ddR@*PS}#`2xNbKXr^#huZgT;NhdUfRG+rUr6S zSbcYH@5h}lP1#4Q`fj;@ZuxO4aciw>UOU})aU?~ky(};9&OCAPmBz%wN$$^!jvcsN z*HH8Q^@VP$vgdf*+4b!|Y{+g-vnDXjf7JUfyOqJZ?Db!ix<-2bPD{VkG4Jn9;aggs zUG$%AO!#`{_JgU=q0O_;UsznS(tYEZ7J0=PwW46xMwCB)3`!3gwHwBr6qYTf^2qvLPIU&R;@ zMY&pvCE}RFf@B~(?nvNn7BD45JSHqIaDoxSZl?a25K~#9rR1dA$QgObKzL7p`*n}O z{{{&w5au|JmkflDj`ixV@~v+XaZOmE=Do6(8AB^9)<=K~UQc0;1!e)h8kPM1e|L9i zDHW-=a2CB}pnl7~^oGKBiv~%U499c4UNR8&>{i?IEvZ)(6u}*{N;Xl+L5n! zOgFt4C13Cvl7Pgp*Mr zof+_YxHB3Ct95D&Lo=A8ITre1Fi-O=AjDuyV-^Nxu#q;hFc5=Hw26g{GFYGm7Iwg3 z3vFS6QwCdUD+|ps*iPG7IAjJpXa@^pLj~zv#2N-E#W;I0uN{70Uk&uwIcYiIym|$^(yI+T1~Vj7J>{m z*bPabz+iKt`6-xybQt4|hYsOwxba5&iD(xD*yP^B(b*4Dph)m&0$s@81gp6xme(mS~4Ot{R diff --git a/src/cpp/transpiler/.cache/clangd/index/result.h.9FDF8FE2A27152FF.idx b/src/cpp/transpiler/.cache/clangd/index/result.h.9FDF8FE2A27152FF.idx deleted file mode 100644 index ff249d2aaae751b32a67939ae3f418d36ab30a32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmWIYbaP8!VqkDi@vO*AElFfyU|aqV&BI%FW=`dmY=GNFg)K<5b@S&Gfx>AH6{4!!Ht&AusCLL8P$1S|rK_}ZnylqfDUDap*UYT1 z_3Y|ftG{*g?7aB)x7%LM5(^GHE*?;Mp!Q4a173eUdpm~W%G{)VK-VolCz&Dm!=jXr ziJO&ygF}Er6ihI10Of$d~Bw2_So7;+r!?CiW? zf`OBX5vT;HKwHj5IZZR<5+4&6&;l-AE&(tBv!Ez7t#}7eCCnF$TwvG3j1A^=-J6># z(8tKb!O6+V5AzI+2C4@62&Nk58K5x8Coo}{CxF5rAAp?>Bw*4&VUW9F!Y~H|g+Z=` zsoLQ-wPKya^BasT9Gp^|GB6hurRF4pbQTvS7mI@!kdOhf7&sitZ>d~7sS?1*$p8Qh Cmakj@ diff --git a/src/cpp/transpiler/.cache/clangd/index/time.cpp.D8F4534350FEB86F.idx b/src/cpp/transpiler/.cache/clangd/index/time.cpp.D8F4534350FEB86F.idx deleted file mode 100644 index f9c058b829cf1f6e6859770898cc4f62980acb7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmWIYbaT^UVqkDi@vO*AElFfyU|+Mzdl{j&%B~FUcO(tN&H+-leA`7p7=(^0fD-TTMX=rigA&4pfYM*S?Ig zv^klp=e(!Itc$)oR;uz$bDm^=Ch5W%<6Rklk|eJ%SH}C-={j9KpQ9<3?hxv|prttK z$c9aRzvfTg>fdJbY+{SyyO;wGmacP7`j`~BJ=Wy=_CW6T*0`6&U-Eu;ChTUL+WoeD zhl%g@rpZ&n=Ng_rw>hD(vGnM_dlfv4({*-~3V!e3zH@2kdhL1p155V)DxB(9V7_en z?^%a}*TyORi~bt^Kknc|`wMeQ!>?}Gdtq+gMHa2cnl96e1ebl#{+|4p>GL&%hwS%F4=Po2A!3z!9kgc*e45)8?? aDLFttGVt*7GBIF2!}^^(wH`BHvTac`J=%1y`&~qO;GUyPYSm>= zoesLnWg0YJr)}8{+ZSPXHZHSxw<>e{{>lFfQ>`?W}Liwda@7@E_TD)WN|F7jomR9aK?vc=3l3aH3`7cxZ6>+C_tw}g{Jn5C@ z#_G++hjwmMzdW(;#WBtAcX*!Hr*6`YI$FoD(Q4v@;>z5lWT5Xgx$-=8{KDgS7?^=P z5a3{EW#?t!WMX9CVP)iC{k$#Q<%a9NVqOL|1_pLneOV(8Rx?&h22P+-ZWf?|y?qH! zd`)~;@iK4$70Bqzm~gO|u~;J%FchVx6)yuSSMgIicCz@g5fcvwiwKJ*Od}5ms|c$m z%pRD77&##h0XYc>VA4Qgu=Nm8hG0(Dy}79ZeT+OD?85AlFwMOm6r}ka1ZRM3(q=J5 xvPqlO6lN4m6lf&a!B8WMQgaeP%;KWtVsQ|I!&5ir|KknPdl)&vo&t#h0RZ|<%Ci6f diff --git a/src/cpp/transpiler/.gitignore b/src/cpp/transpiler/.gitignore index 0f3a6b1..481ed1e 100644 --- a/src/cpp/transpiler/.gitignore +++ b/src/cpp/transpiler/.gitignore @@ -1,2 +1,3 @@ Debug Release +.cache diff --git a/src/cpp/transpiler/lexer.cpp b/src/cpp/transpiler/lexer.cpp index 32049ff..b210bf6 100644 --- a/src/cpp/transpiler/lexer.cpp +++ b/src/cpp/transpiler/lexer.cpp @@ -111,7 +111,16 @@ Result> TokenizeMdem(const std::string& fileRunes) { row += 1; column = 0; } - buffer.push_back(c); + + if (c == '\\') { + i += 1; + if (i < fileRunes.size()) { + buffer.push_back(fileRunes[i]); + } + continue; + } else { + buffer.push_back(c); + } // SkipWhitetext if (!textStarted) { diff --git a/src/cpp/transpiler/parser.cpp b/src/cpp/transpiler/parser.cpp index fdbbf91..959beaf 100644 --- a/src/cpp/transpiler/parser.cpp +++ b/src/cpp/transpiler/parser.cpp @@ -19,25 +19,45 @@ struct QuestionElement { }; std::string MultiElementQuestion::ToString() const { - std::stringstream choiceOut; + std::stringstream ss; for (const auto& choice : Choices) { char opener; - if (choice.IsCorrect) { + if (type == MultiElementType::Order) { + opener = '^'; + } else if (choice.IsCorrect) { opener = '+'; } else { opener = '-'; } - choiceOut << opener << " " << choice.Answer << "; "; + ss << opener << " " << choice.Answer << "; "; } return std::format( - ":{} section: {} id: {}\n{}", - QuestionText, - Section, - ID, - choiceOut.str() + "\nsection:{}\nid:{}\n{}\n{}", + Section, + ID, + QuestionText, + ss.str() ); } +std::string GroupQuestion::ToString() const { + std::stringstream ss; + for (auto group: Groups) { + ss << group.name << ": "; + for (auto el: group.elements) { + ss << el << ", "; + } + ss << "; "; + } + return std::format( + "\nsection:{}\nid:{}\n{}\n{}", + Section, + ID, + QuestionText, + ss.str() + ); +} + // Automaton for validating token transitions std::map> automata; @@ -166,9 +186,22 @@ Result> ParseQuestions(const std::vector& tokens) std::vector questionElements; bool isOrderQuestion = false; bool isGroupQuestion = false; + bool isPlusQuestion = false; + + auto isInBounds = [tokens](size_t i) { + return i < tokens.size() && tokens[i].tokenType != TokenType::EndOfFile; + }; // Start element parsing & add to the offset. - if (tokens[i + 1].tokenType == TokenType::IdentifierStart) { + if (isInBounds(i + 1) && tokens[i + 1].tokenType == TokenType::ElementOrderModifier) { + return { + questions, + "cannot have order modifier ('^') in the question definition", + tokens[i + 1].row, + tokens[i + 1].column + }; + } + if (isInBounds(i + 1) && tokens[i + 1].tokenType == TokenType::IdentifierStart) { id = tokens[i + 2].content; questionText = tokens[i + 4].content; i += 6; @@ -178,10 +211,6 @@ Result> ParseQuestions(const std::vector& tokens) i += 3; } - auto isInBounds = [tokens](size_t i) { - return i < tokens.size() && tokens[i].tokenType != TokenType::EndOfFile; - }; - // Parse elements of a question. while (isInBounds(i)) { @@ -194,12 +223,17 @@ Result> ParseQuestions(const std::vector& tokens) } // Check question end. - if (tokens[i].tokenType == TokenType::ElementDashStart && isInBounds(i + 3)) { + if (isInBounds(i + 3) && tokens[i].tokenType == TokenType::ElementDashStart) { // Distance to the possible question end. - size_t offset = tokens[i + 1].tokenType == TokenType::IdentifierStart ? 5 : 2; + size_t offset; + if (tokens[i + 1].tokenType == TokenType::ElementOrderModifier) { + offset = tokens[i + 2].tokenType == TokenType::IdentifierStart ? 6 : 3; + } else { + offset = tokens[i + 1].tokenType == TokenType::IdentifierStart ? 5 : 2; + } if (isInBounds(i + offset) && tokens[i + offset].tokenType == TokenType::QuestionEnd) { - break; - } + break; + } if (offset == 5 && tokens[i + 5].tokenType != TokenType::QuestionEnd) { // Cannot place the identifier on the ordinary element. return { @@ -214,39 +248,61 @@ Result> ParseQuestions(const std::vector& tokens) // Determine element type. bool isDash; bool isGroup = false; - if (isInBounds(i+1) && tokens[i].tokenType == TokenType::ElementOrderModifier) { - isOrderQuestion = true; - if (!isDash) { - // TODO: err - } - } + bool isOrder = false; if (tokens[i].tokenType == TokenType::ElementDashStart) { isDash = true; - if (isOrderQuestion) { - // TODO: err - } } else { isDash = false; + isPlusQuestion = true; } - if (isInBounds(i+2) && tokens[i].tokenType == TokenType::MatchGroupEnd) { + if (isInBounds(i+1) && tokens[i + 1].tokenType == TokenType::ElementOrderModifier) { + isOrder = true; + isOrderQuestion = true; + if (!isDash) { + return { + questions, + "order questions can only be used with dashes ('-')", + tokens[i].row, + tokens[i].column + }; + } + if (isGroupQuestion) { + return { + questions, + "question with groups cannot be ordered ('-^' and ':')", + tokens[i].row, + tokens[i].column + }; + } + if (isInBounds(i + 3) && tokens[i + 3].tokenType == TokenType::MatchGroupEnd) { + return { + questions, + "cannot have groups in order question('-^' and ':')", + tokens[i].row, + tokens[i].column + }; + } + } + if (isInBounds(i + 2) && tokens[i + 2].tokenType == TokenType::MatchGroupEnd) { isGroup = true; isGroupQuestion = true; if (!isDash) { - // TODO: err - } - if (isOrderQuestion) { - // TODO: err + return {questions, "group questions can only be used with dashes ('-')"}; } } QuestionElement questionElement; questionElement.isDash = isDash; questionElement.isGroup = isGroup; - questionElement.content = tokens[i + 1].content; + if (isOrder) { + questionElement.content = tokens[i + 2].content; + } else { + questionElement.content = tokens[i + 1].content; + } questionElements.push_back(questionElement); size_t offset = 2; - if (isOrderQuestion) { + if (isOrder) { offset += 1; } if (isGroup) { @@ -256,25 +312,53 @@ Result> ParseQuestions(const std::vector& tokens) i += offset; } - if (questionElements.size() > 1) { + if (questionElements.size() > 0) { if (isGroupQuestion) { - GroupQuestion *question = new GroupQuestion(); - // TODO - - } if (isOrderQuestion) { + auto *question = new GroupQuestion(); + question->ID = id; + question->QuestionText = questionText; + question->Section = section; + int32_t k = -1; + for (size_t i = 0; i < questionElements.size(); ++i) { + auto questionElement = questionElements[i]; + if (questionElement.isGroup) { + ++k; + auto group = Group(); + group.name = questionElement.content; + question->Groups.push_back(group); + } else { + if (k >= 0) { + question->Groups[k].elements.push_back( + questionElement.content + ); + } + } + } + questions.push_back(question); + if (debug) { + std::cout << question->ToString() << "\n"; + } + } else { auto *question = new MultiElementQuestion(); question->ID = id; question->QuestionText = questionText; + question->Section = section; for (const auto& elem : questionElements) { Choice choice; choice.Answer = elem.content; choice.IsCorrect = !elem.isDash; question->Choices.push_back(choice); } - question->Section = section; questions.push_back(question); + if (isPlusQuestion) { + question->type = MultiElementType::MultiChoice; + } else if (isOrderQuestion) { + question->type = MultiElementType::Order; + } else { + question->type = MultiElementType::Regular; + } if (debug) { - std::cout << question->ToString() << "\n"; + std::cout << question->ToString() << "\n"; } } }