|
00:14
jgaz left
00:43
jgaz joined
01:10
jgaz left
02:56
frost joined
06:20
tirnanog joined
|
|||
| Anton Antonov | Good to know! | 14:14 | |
| I noticed that after studying Raku for a few years it is much easier to advance my learning of otherprogramming languages. | 14:17 | ||
| I noticed that after studying Raku for a few years it is much easier to advance my learning of other programming languages. | 14:43 | ||
|
14:57
frost left
|
|||
| Nemokosch | Raku has a very clever built-in collection of data types, for example | 16:10 | |
| and very nice meta operators | |||
|
16:12
razetime joined
17:05
razetime left
19:18
tirnanog left
|
|||
| klebs | im seeing a case where a grammar parse ordinarily fails quickly, but then hangs when i try to trace it | 19:28 | |
| if i kill the trace, i get an output like this: | |||
| looks like some kind of infinite loop | |||
| but my question is: why would this only be triggered once i add `use Grammar::Tracer;` | |||
| no other changes | |||
| ``` | 19:42 | ||
| #!/usr/bin/env raku | 19:43 | ||
| use my-grammar; | |||
| my $in = $*IN.slurp.chomp; | |||
| grammar T { | |||
| token LIT-CHAR { | |||
| \' . \' | |||
| } | |||
| } | |||
| say T.parse("'a'", rule => "LIT-CHAR"); | |||
| my $parsed = MyGrammar.parse( | |||
| $in, | |||
| rule => "LIT-CHAR" | |||
| ); | |||
| MyGrammar is, however, a much more substantial grammar with many more rules, but LIT-CHAR is at the leaf position | |||
| whoops maybe this shouldn't be in beginner | 19:45 | ||
| (this example is with Grammar::Tracer turned *off*, turning it on *hangs* on the second parse) | |||
| ``` | |||
| #!/usr/bin/env raku | |||
| use my-grammar; | |||
| my $in = $*IN.slurp.chomp; | |||
| grammar T { | |||
| token LIT-CHAR { | |||
| \' . \' | |||
| } | |||
| } | |||
| say T.parse("'a'", rule => "LIT-CHAR"); | |||
| MasterDuke | i think it's known that Grammar::Tracer can sometimes interfere with what it's tracing | 19:47 | |
| klebs | (this example is with Grammar::Tracer turned *off*, turning it on *hangs* on the second parse) | ||
| ``` | |||
| #!/usr/bin/env raku | |||
| use my-grammar; | |||
| my $in = "'a'"; | |||
| grammar T { | |||
| token LIT-CHAR { | |||
| \' . \' | |||
| } | |||
| } | |||
| say T.parse($in, rule => "LIT-CHAR"); | |||
| my $parsed = MyGrammar.parse( | |||
| MasterDuke | i don't know if there's any workaround though | ||
| klebs | debugging the debugger 🙂 | 19:48 | |
| that may explain the hang, however why do we get a `failed match`? | 19:49 | ||
| (when running without Grammar::Tracer) | |||
| seems to me like it should succeed because it is the same rule at toplevel | |||
| MasterDuke | you're saying you get `「'a'」` but then it fails the second time? | 19:53 | |
| klebs | yes | 19:57 | |
| one other detail perhaps of note is that this grammar is created by mixing in about 130 different roles | 19:59 | ||
| so it is pretty big | |||
| meant to parse a full language | |||
| but i dont see why that should cause a failed match when i directly specify the rule via the parse method as shown above | |||
| MasterDuke | i haven't actually done much with grammars so not sure i can be any more use, but if guifa or codesections can't help you here, i'd recommend asking moritz over in #raku | 20:03 | |
| klebs | thanks for the help 🙏 | 20:05 | |
| MasterDuke | np | 20:07 | |
| klebs | i found a way to drill down and locate the source of the problem | 20:56 | |
| basically just binary search commenting and uncommenting batches of tokens | 20:57 | ||
| will find it soon | |||
| i think there might be some other rule the grammar engine doesn't like | |||
| which is causing faulty behavior | |||
| that is my best gues | |||
| that is my best guess | |||
| yep that was the problem | 20:59 | ||
| for some reason this was an error: | |||
| `token MATCH { match }` | |||
| changing to `token MATCH_ { match }` | |||
| solved | |||
| gfldex | @klebs#2209 I believe you stepped onto: github.com/Raku/nqp/blob/master/sr....nqp#L1101 | 21:04 | |
| MasterDuke | ah yes, using names already used in the core can cause odd problems | ||
| gfldex | or github.com/rakudo/rakudo/blob/mast...ch.pm6#L40 | 21:05 | |