pax_global_header 0000666 0000000 0000000 00000000064 14316543224 0014516 g ustar 00root root 0000000 0000000 52 comment=ea38135ac5914db765abeb56df2fed7e5610b5a5
no-context-moo-ea38135/ 0000775 0000000 0000000 00000000000 14316543224 0014737 5 ustar 00root root 0000000 0000000 no-context-moo-ea38135/.github/ 0000775 0000000 0000000 00000000000 14316543224 0016277 5 ustar 00root root 0000000 0000000 no-context-moo-ea38135/.github/CONTRIBUTING.md 0000664 0000000 0000000 00000004035 14316543224 0020532 0 ustar 00root root 0000000 0000000
Remember...
Philosophy
----------
> _Some thoughts on what moo is/isn't, for dev types._
Moo is a very fast lexer.
The input to Moo is a character stream. The output is a list of tokens.
You define _rules_ for matching patterns in a stream. A rule defines both a pattern to match, and the `type` to label it with. A Token object tells the contents of the match (its `value`), its `type`, and the position in the stream.
Keywords are a natural extension to this model: they let you further specialise a pattern. When a keyword matches it relabels the token to instead have the `type` of the keyword.
The rules get compiled down to a single regular expression. At its core, moo is a fancy helper for combining rules into a RegExp, and working out which rule matched.
Moo provides primitives for manipulating the stream--`reset` and `save`--so that you can implement your own streaming strategy on top.
Under this view of moo, it seems hard to justify including `states` in moo itself--states could just as well be a library on top of moo, that performed a `save` and `reset` call every time it wanted to switch lexers! However, I think we can justify including states due to a) efficiency--the scheme above sounds expensive--and b) convenience. Stateful lexers are common enough that it's worth including them in the core of moo.
...as opposed to things like skipping whitespace tokens, or a scheme to generate INDENT and DEDENT tokens from Python-style indentation, which can very easily be a library. Providing support for that sort of thing inside moo itself would probably involve transformer functions, which would entail a polymorphic function call on the matched rule--which would reduce performance for everybody.
Similarly, error handling has to be in moo core, because it couldn't be added as a library. But it's simple enough, and returns enough information, for you to decide what to do about errors yourself--specific to your own application. (Usually, though, all you want to do is raise the error moo gives you!).
no-context-moo-ea38135/.github/feelings.png 0000664 0000000 0000000 00000221625 14316543224 0020611 0 ustar 00root root 0000000 0000000 ‰PNG
IHDR | 3 l³ë PLTE ³0ôˆ ÿtRNS *Š… ¨¬¥œ™Ÿ›~YG:/,)(+.8@CHScs€˜®´·²•X'EZgpzn<
Row|Ž�y‚—«¢”#d„ˆ_4r�£šk ^‹§©¦}\B;[{ÆÛçãÖ¼�DA±Ìʳ“Qi†ž½‘jfK`WL9h-°ª¤N5207Peu‡36axvV
Œ’�»¡ƒlO?MÕæéßË 1bÂÑǯFIT"J¶!tÄȾ$U–¹ðîÝÓÃ]%‰¸>mÁèοÀº=ØÔÅqµÉÍ&�ÞÙäàáÚâíõ÷øòñïìÐÏÜöûùó×Òôåêëúýþü2:÷o EIDATxì˜XšûÇï¥Áu‡Àf^[@sŠI¸s`\ÅšµRd‰³dÝ3Öiã5ai׺»{{êÿÞ^çßq÷<|m=ï9¾ç=Ÿß÷Çï§JýC 08�Di
>bä¨ÑcÆŽ7~ÂÄI“§LÕFëèêécàXÜ´é_�ÔÐÈØdªé/fæ–ŸŽµ²¶±ÅãÀÑŽD¦`¨PÝ|<ãÝ@¦½ƒ£ØŒs¶ÿë7.3\ÝXîžogôòöA°9\2Ïw欙3'ûù³gÍá‚_¿‰�PW·°€_Ã#„v‘Qjê>cBtLlØ\Lœv|‚wbÒç\œ7ÂÛa¾ß‚…¡‹,BŸš©™âU)“q´Q*<"v'Å/^´dé²¥Ëg¯˜&I[I¦Á"0”XÒ´ôŒÌ/Jš•íç�cž›—ïõ騂‘Ѷ<±PXWŒáKõ`²˜Ä�÷–LÁÅ8ÊÑ«–¯þókÖ’„¨Bçyo®Yìä.Ã!…‰ë‚�×ç€E6nÚ¼%Õu¬á¿A[·mÇ¡JËÂË+Ú;vª©ù»9�´t¥a ßä’Ϻ†éµ{ψm^{
Vg2öí_´bý�:ze–äëGpbQ©©n«X/<�hm’ �_I§QDaT–“ߨ}»¿0é¡ÈœäÃ<üªYŸ6LÃy{lIhžÀÂÖ«¬ªÖƒbjÞ‹úÞIvŽr’œdg½ïÏ"öÑ>:ymÝÛ�–`2²¯OÛ¼c²uH±¹á·Æê¢ü×"
£»‚8UMUÍTŸä%™êr¾åóñdŠ4›ŸÐ²cÍg6׳5$óßó–i†øÇ¥¯-QY¡¦§¯Pa`´z^Zº�\Œ‚°¸l¨äq¤@ïKµ/Tr4�ö÷þŒÔÖe hp]\¡(
/×㺙n{?±3´ôH$¹éŸûÎ�ëäX”–Ý»¶•ÙšF’Qìbœoâ�µ¾iîÇ�o<Á1›°úµdé6 –ª¹ªêdª“ótuõž±Ä/¯ªÐÓ±àùÜ'Æ|³/šþ�é˘è/ØSèQİvE5LÕ^�©àˆcÉ…G'ÚÉüŠœ.£�mìpDRÞ¤ŸÞ¹DÂ#�Å"•´C¶‹lµü��JÐr‘“Öùû¼1»Ä¸Ó‡³™ï¢_+¬Ç’cet\|‹$WGZÖÝÝ£pÞöšñ…°¥ëV÷–7ó9ÊùûÕÕúÕKkûpU¿»¼Ä{RÁмª·öÍqXöw“
5ÿŸ3kº/–‚ÑWècô››+~,çë±±øùÆ5Y™_—2j½yžÝ0GGSûÏAõÔ³˜"-HñižßÒºVÜ»&¡Ñ$žß~€�ñJœF?zê=9RàNFp9�ÿaÞiÝ-�gΰÍG¯~âxI—_PÚqêãpNmëÞøÈ£>4ÕA-|¼¤%tH^yŽ1GH;ØB*<gÝVÒ•d?vô²ô¤Õÿ 5Z]—îçDé¨ÜRÞÞ>p²JÆûM0Êb~mFË ñ®‡sq`üäÏ©Ìó‹¦H<¢�w�êÚõá¨])6`O$ºNIéJïTÌ*>=5ã}'‚«�1µŸKGÊÂÂ/\ì©PvZ¾Ð¶ØVY^*¨€L“Ô¶ì�ó;,`‰tiõ¹æ~#·AOmjïœKAA—67öž¯œ«Š¨ ¦B¹D¿ùùLü²]þ}È—ÌÕ«™ßJ�—këpR¡l(\‹@<ì�8>Êå[p>ämn£�wt”´~ÞZ®9Ÿbðñ˜óp |è’dòÚùfBJ‡ú>£Ü:É
ÉŽ�ê‹`ücáW6^í)�[òÆ)ãQê`é1}]›FˆW|c¼m ì0X16ï¨Ér—!¨0‘ÌŸtáú�›7®ßº}ç·»›fo¼ÔØÝsïDx@óI¾ª¢”£q8´uÆšÉqØä¥Ë',YºtÆ’Cß“@�2[Ï'µŽ÷ó˜ÖCV%û¾‘æ½VÙhûƒ}xÿ»©]Ë;‰r¥�ÉÆW$†¢„Ñžïê.7Z„¢C¥¸oÃÍeú�©¯o-
£¦�…ìƒ.
)“¹=§>çkÉÃêêSéÊ>�áÙŒ!¨0KØß½éÖÛ�=¾qýÉÛ
wî4ü� �®^l<ûôÙ¯[Â*Ož,-í
¨lnç÷WP¸àµù¦ùΟ:së߯¸zëÞ£s5cþë\j´k[ò/‡ÍˆJyüô· ¿U·ú+g5ʤT:�@ˆ€àô‹´b½3r…Ð
ÌAéý÷˶Dœ6“ùzžŸãâT]‹\T„ˆ�ëóTß�‹s®ûA>…à¿*!Æê!¨�äP¬h:~çÖó‡øž<þüÉ“;›îÞi¸ÝÐpíøñM¿kvPPÐÕ«W�O—.6^éî~ÚÓS¶¥²}®T!•*`õq‚ÂBÁia=R+%“Ñ èÝ#v/\±g¸óÔ„x›43)F rf\Îèò²;>}Bç(Ë]L
ê”a�µkšžèÈÛsùu*2F/\01êkÝ9ݱÐí4$ÊhÔƒ*Ž`Êå±ì.ƒŠå½•¥ý?û]oüoëâ)TÝTÙge\,„`~H]Mr™åÀCéK¡ mÉöüôÌ¡(Ñe¼ÖÓÑ^õìAÐÀíŽ6_¼tõÂì—/�ÏÞø"èêÅKgßôòÕÝ»¯^Žøâ «›
Ï66>8;§éÞý{÷O kسž9zšÊ«š«¥
éÜöö“Çš{ÊzK¥
—EƒÈh,8ZßgŸ�`šìa^»óÏ{bX†DÍ‹Ò8æwSfJtš-ì3,û_Ë ?
�-ò³úÚ¤!~¸Ót!!ŽLSD©Øá¦Øe„ •/°œ"½Þ|îuSåT‘§^>ŒWå(M÷«k,ö�0w¤õëCä}9-ùÛ†Ê.¢,,,ŽÌ‡ˆáp8Ö¯Òו‘‹„¬¹ÇšÛ«¥
EDZ=Ý�Μi¼røºùÒÆ—Î ÛÑ+—.^ÜÜøàð§ÀŸÎ^9ó øÚ}ö
ð»³W€_œ=Û
ød÷zúôiSUÕ ð�ªÞv~‡J¥à÷Ód:ðLD1‰OÏž0«óÈ6�+~eíèsuµ•|ŽzýmG%Æf:\®r¦åW'mݾ[OG¢·8Þèc{ÔѦÊbql¾vôÛö8>í´®HÄ*ÄçÙºqøjÔ4†öSì
i"Š;±Ï×dϸ!]vž³j[³s×OÿcïŒÃ™^ÿÿÿŽm@UªªÐ6„GlC ClS±s}&¥J›*e™ ¶PÕï:dm´l»®o«,»lÓiÀ©~çã|þåüsº~þÞ0›>Nß#uŽô~œs:÷}£ò¾ßÏûõ¼ï—û¾Ã'S[ÁÇ{$Ñ©*óî£ý)Nf0Ç…™âŠˆ4O¦Ikd<�?øáÞ3²úùø³ž=˜zðàó7oîýjn¶”â¬ßÜ;>£Þÿ9~ïÞ½7ož={ òügl,©ilêÁÔÔÔ˜X¡A 0p£€–°¸òàÂ�ÈJßàê™ÀÈbC+¬_š‚ª˜0Û�Ì:û:|ºlwû³Ö\nnÿÅÒµë
5ÑÆf&}õNû>Ýe¯�]ݽcÓáÖ�?«,“£2ˆþÖÃ.ÞEDçìÈuž?â—�ƒÙúD:UÝýÇ–}Z-Æ»N¿ìvp.˜{U”dçwX,‚ %—[DÀÊ•<‘H¦P©èºD%ƒ¢šžô¤ÏŽƒz<>#=ð �ß{öìÍLñ
¨\PºSƒb1_ÄSÑ¥rµšCÂ�¸¹Æf¡›®lÚºuÓõâóC— °ø…h\çäì•dnj¾þJÁduÁFçd®Q]ÈÕ—Ž+‰§—œ“m¢r\/¾þÌž²ˆÜƒe`rC<,�jðpƒÂ§ÿŒøÜ=“³‡„$Ô&&î>Ö
¬2&�ž¸s¬øòæñ'ûÞw¸7¯Í}K\²ƒËãž?/w!á$£aâH*Z© kd
O&�6¥5�€šUøÇ …ýãøñãoFÓAšfH›¥)mlllT£�)9#H&N„ÏüÆqaU+î‡mUæ® ¬�Š“×ª2+òŒhµ®·V6º¹ÛgÆ$%5ô\oýL
·Þ-²!Ôy[Åoq3à’úóŸü3}]¶11ß Ž€5𰲬zôî[s^ìŽcÅ×/l9tøfgY›cøÃz/ß’H—aO_WO_"�'�HD,ZôöøLðû05JÖhø 0Ó›ÆÀXùLúƒ–´I$�Šù M`ÂC-±a²üÀÔ£çd#è’[SoŸ�C×A·îÏJ_¯øøø‰¨€¾(pwÒJ�EàØÍb'?÷eµ÷4†cÀ¹à‘ý�ÎXõ›„ý#¦sëîl« ‘X—3päöåð5dyšË&o½:}“ÅÓØ}Y½›¹L•! F{ûy%ù!¨(©ŠÜ4ýæ�ŸAÇš–Ο_:GçkxŽ\:B$àafþ]ãë¶]¾¾ÌüDcêýÛn^†5QQyQÉv‰;„�>(0�ýù‘óv‹ò‰»ÿnóú
ƒÜ¢øª^ÇB{/v•{˜D\žkþî;ï�5K�Ó{ãœ"
ÀJsO{ObCINûp/]L–©”tºR¢TÉø£i2™Ìÿ!kȈ˜úXºÜK$áa‰=»^\F.±¬kÈ©ÄÚuà쎇'WÁàõÄGÃD‡Zmìy×7>Ú´ÿbê?ð\&×¥¬ñÇ&!q§,ØkyÎ J9ÔÇët†ûSÉŸ~F‘¢îÛwåy÷‡ö×ÔúG£…h¡”®ñdqzÚô8+ƒ†TÌ'ËxJÅ€7Ä4¸Ev[ý5Ÿ ÄnL}]ÐÛ¶:æ4î½ü‰ÌÜ�‹ïƒ€É
®¶†�:þþ×ñå�GU×|óŒl¸ ßB§�ÀZ&^ #«˜ÞlÝ;q”©HT¡ît°µ�¤µ38¸åL˵˜A•ÓešY:ŸOÖ€±�Ì—))jµZ.¤FÛæMD½v¯îÌ*8û�\]Áñ¹âžìñÀ™#T†Á•Óœ
“ÿdøiJ{˜‹¡Âc–3ܾmm¿?©0-ÁÉpБ7 ù£
æÖAáîÇ6_º±1ÃÆÅ±U¢RÈD³žü�§P�M2ŠkN
k‡ŠÏoüaÕï)†èØ`nÆdàCSÊ �×l3rvu|w|åٽÓ�{ó}'ð*¼Ïz lW/°¦i…‹¦¦x&“úO ÇÓ¨ð½îËÙ/³n•…�‡êkm±4Š6‚–ÒU Eͬg¢¡Š"§Ù˜$˜åÙ½g�âZœO·B�puÒ¶58ŠhÃ0¾¶o.&dä|d;®»…º^|Röû°1ëúÝ3.~µu\#SƒÈ¸sökü} 2VŒ= וê·åqTªÜ¬¿˜Õ(kȾÖR^Þ²‡€
é
Ù<Þ\T€ÉB‘R:BÅb0D€wÍù×3Ç/®åQˆ›§\Í(LÍιŒö»³õ––šiL—ÙÞî*ûJKkŽáНZºØ%÷íé3 ð‰9x¹XãÔPÒ>ˆaúM†B
ÝxßrU\¼3åhÊ£S§&p$&-‘Kåj5O&i@1**¥RB§ @3Ú—‘¿®÷eÁjY™�hÛ”ßÏE2ë<žÎ¯|®÷˨5¼¸8‹[ö(Zó ]MJ¸m‘ø5´çþb{¹‹ùD·®/*§ûùÆT`ãIKÖTôD¿)Á†#�~÷Y°±`_VguÙdoƒ!xš¤Qh5E¢Tª<ÞLú‚"R1Eu{2ö_¸r½ø‡)7ÿáõ>ˆÔ”ŠZ<ÜtbþAÇñ0¿¼<뽋ûv«%M¬’ >íWn6}ií5�Ÿ{^îVŸÇeM3»[î”®ý÷Â=€ül¾e‘œÿCÀ—àT~~aöÉ—>#�8£C©„#—�00¼i�±™±ÙpXXØ™–à…
,�ÿn^´6)ÂÙúnŸ‹h�›òýj£–~´(s•%<%
DzÜñ´3ðËFßC§ZNºØõÁ˜Hxt²kÜÎïbLá½™Æ^Ño±¨Ú¾dFÙýÆÃCç‹‹7&äâH¤ ‹D"0“Èd21"Ï5ËIJJ0¯gÄ_/s`³ÿ¾I!DЖì‰"$Ò¬pÞÿ4gÛÕNøí.ý8þÊ—;¢VÈ”h¡623âÝ/÷’4ž>çéR[g’¢ãÍO|~È•þ`�v»Ð1ŒŠ}NO~²³öÝìÍÊs÷3‡ÝYg˜Â¸¸"œ'�Šp\SS�çæF·_¸°ÕbëßôÓMç½¢™lÀÁù^.;Ö`^ëíW•õ_.銌IãÐ)h´Yg“yãpëŸßopîÉ‹.Ba†ž…¾“¹ˆš,¦ÔÇ:<(üy½zÖV—½ÛK¿\ dkG»£àŒ#‰ë×ïíñÚãïï¿Ç,WDšÁ®Ë<¿qã<8%|t÷àÙ#[€¯DÇc¼€Jô‰p\ŸùöÞ>&|]Kކ†Ðx"ž””\âtìÅ-öx%R_]‹ô ÀcQ#„ ŸáòýßË:À°ºiL¶·Ð1À ÁŽéÕ×›‰ÑǾ¢íi?qeëø“ÓûˆÈȨ�†ÕEûgD%÷³X¬Ðþþ~VäµìËÀWÂñõ‘ &Š
s;¬ÍýnlHÊóö[s©“Dw–ø3©OÃ—Éø¾§�±+
ŽÕÁVÖy\,JH5
õH|Uú½˜ž¹x”×®÷(¨4ؽz¾@%’W¾û[^Ç™ƒÙ)Vn…–Ï÷fžÛ°óÎàÆEû®ÓeÀWJ4TÔ P˜¨L÷ù†æ®QÉ>‰/�%h¾×_ǤÒéŽZM‘R‰þÖÙwoly×Éþ\Á¾¼°?Ø Æ0\mEâÆ[ßÍ„ÃyDCV4´ê=Œ
¶_oJà"WðÉŒÛ Äš¤ãb<¸Ü‚3׺N |SŒo”·Ï‘×Kû”Ô+g]ó¨4¡Z¢¤Sèh$Î?™•Ö~ìÝçüèûýº£{ƒ³òÌHX„‘IÞ„]ð«^à{¡±AJæËBÇõ¦Õ(÷”®ÞYÁQh4jë§ Ä¤ñ©G‰Ið÷8¬k ®˜Hö+ –&¨zËUCc„T¡R£,“H€“`fÉÝûU7·-㪃 Ž}[Îg–TZ÷çm8t×À¼Ûò;ÒpËUŠOh¨[¤�†Ó‹sY¾žŒ§$ Ö Í¯rLáF°äƒº¥Ç½É5õ-û>±íîr\}ÃF€@"‘X,–jƒB’LjâGXì»UÖÆf7²ÿ7åMž¾¿áìs·J;ƒ>‚*§H¤Ä‰Š“Uç¿Ï �ÈқĊ‰û�—
4ª¨XÀžE—ñT