{"push_id":1410931657,"size":3,"distinct_size":3,"ref":"refs/heads/devel","head":"9e63260cebd72183c9401addbf21767edbe39176","before":"2ad801e63600c2e3e4b4b58c16c96dbb1e3d9cf6","commits":[{"sha":"10b51aaee1e78e82e79967d2682ce4452cfd1b63","author":{"name":"Ulya Trofimovich","email":"3ae371a38aae14eeb692e418400370f7799b653d@gmail.com"},"message":"Track uninitialized tags and set them to default value.\n\nUninitialized tags come from alternative and iteration:\n    ... @t ... | ...\n    (... @t ...)*\n\nTags under alternative preserve their initial value (given to them\nbefore entering DFA) -- they don't have to be explicitely set to\ndefault value (but it is convenient, otherwise we'd have to initialize\nall tags every time before entering DFA).\n\nTags enclosed in iteration might be assigned positional values on\nsome iterarions, but not on the last one -- their default value must\nbe restored explicitely before each iteration.\n\nThis commit adds specail kind of 'save' commands that set the given\ntag to default value (instead of current input position). We insert\nthese 'save default' commands for tags in alternatives: all tags that\nare present on left alternative get default values at the end of right\nalternative.\n\nLater on (during DFA construction and optimizations) we treat default\nvalue just like normal positional value: save it to a variable, copy\nvalues between variables, etc. This way DFA gets additional commands,\nbut the number of states does not grow much.\n\nAnother way would be to treat default value as a special bottom value:\ninstead of saving it to variable, keep a dedicated bottom tag version\nand forbid mixing bottom version with other versions. This way default\nvalues would be encoded in the structure of DFA, so there would be no\nneed to explicitely save them. DFA would gain no additional default\ncommands, but new states would appear.\n\nTest changes have been verified with '--skeleton'.\nTest 'tags/interference.i--tags.re' have been completely rewritten --\nthe old version no longer captures what it should (see comment in the\ntest). The old vesion has been moved to 'tags/fallback6.i--tags.re'.","distinct":true,"url":"https://api.github.com/repos/skvadrik/re2c/commits/10b51aaee1e78e82e79967d2682ce4452cfd1b63"},{"sha":"2db0433b08bbda2d872eeae26b159a0d5e2daf2a","author":{"name":"Ulya Trofimovich","email":"3ae371a38aae14eeb692e418400370f7799b653d@gmail.com"},"message":"Skeleton: generate proper keys for tags.\n\nInstead of calculating all necessary keys, then attributing keys\nof the first path to all paths, write proper keys for each path.\n\nFound by slyfox's fuzzer. :)","distinct":true,"url":"https://api.github.com/repos/skvadrik/re2c/commits/2db0433b08bbda2d872eeae26b159a0d5e2daf2a"},{"sha":"9e63260cebd72183c9401addbf21767edbe39176","author":{"name":"Ulya Trofimovich","email":"3ae371a38aae14eeb692e418400370f7799b653d@gmail.com"},"message":"Skeleton: fixed comparison of transition tags during construction.\n\nAt the time of skeleton construction DFA has just been build and\nall tags in it are just raw pointers to lists of commands. These\npointers are unique for each transition (tags are not shared between\ntransitions). This means, comparing tags for different transitions\nwill always result in 'not equal', except if both transitions have\nno tags (pointers are NULLs).\n\nFound by slyfox's fuzzer. ;)","distinct":true,"url":"https://api.github.com/repos/skvadrik/re2c/commits/9e63260cebd72183c9401addbf21767edbe39176"}]}
{"actor":{"display_login":"skvadrik"}}