* SMIE examples or guides @ 2016-06-19 2:57 Björn Lindqvist 2016-06-20 3:21 ` Stefan Monnier 0 siblings, 1 reply; 18+ messages in thread From: Björn Lindqvist @ 2016-06-19 2:57 UTC (permalink / raw) To: help-gnu-emacs Hello emacs, I'm trying to implement SMIE support for a language's major mode. So I've been reading the documentation and looking at how SMIE is used in octave-mode, but it is not easy to understand how it works. Does any friendlier sources for learning how to use SMIE exist? Like smaller examples, how tos or smie guides? -- mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-19 2:57 SMIE examples or guides Björn Lindqvist @ 2016-06-20 3:21 ` Stefan Monnier 2016-06-26 12:23 ` Björn Lindqvist 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier @ 2016-06-20 3:21 UTC (permalink / raw) To: help-gnu-emacs > I'm trying to implement SMIE support for a language's major mode. So > I've been reading the documentation and looking at how SMIE is used in > octave-mode, but it is not easy to understand how it works. Does any > friendlier sources for learning how to use SMIE exist? Like smaller > examples, how tos or smie guides? There are several modes using SMIE, beside octave-mode. They don't tend to be very small, sadly, because indentation is pretty much always tricky business, so even if it starts small, it quickly grows. I suggest you post what you've tried and the problems you encountered, and someone (mostly likely me) will help you out. In return, hopefully you can provide some suggestions for how to improve the doc. Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-20 3:21 ` Stefan Monnier @ 2016-06-26 12:23 ` Björn Lindqvist 2016-06-27 8:31 ` Stefan Monnier 0 siblings, 1 reply; 18+ messages in thread From: Björn Lindqvist @ 2016-06-26 12:23 UTC (permalink / raw) To: Stefan Monnier; +Cc: help-gnu-emacs (Sorry I haven't had time to play with emacs for a while) What I have is the following: (smie-setup factor-smie-grammar #'factor-smie-rules) (setq-local smie-indent-basic 'factor-block-offset) I have pieced together a factor-smie-rules func by looking at elixir-mode and octave-mode: (defun factor-smie-rules (kind token) (pcase (cons kind token) (`(:elem . basic) 4) (`(:after . ,(or `"HELLO")) 4) )) The intent is that if a line contains the token HELLO, indent is increased for subsequent lines by four. I'm also planning to add a BYE token, pairing HELLO and decreasing indent by four. Something happens when I type HELLO<tab> and emacs says (error "Please avoid it"). So my rules function is triggered, which is good but the result isn't what I want. 2016-06-20 5:21 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >> I'm trying to implement SMIE support for a language's major mode. So >> I've been reading the documentation and looking at how SMIE is used in >> octave-mode, but it is not easy to understand how it works. Does any >> friendlier sources for learning how to use SMIE exist? Like smaller >> examples, how tos or smie guides? > > There are several modes using SMIE, beside octave-mode. They don't tend > to be very small, sadly, because indentation is pretty much always > tricky business, so even if it starts small, it quickly grows. > > I suggest you post what you've tried and the problems you encountered, > and someone (mostly likely me) will help you out. In return, hopefully > you can provide some suggestions for how to improve the doc. > > > Stefan > > -- mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-26 12:23 ` Björn Lindqvist @ 2016-06-27 8:31 ` Stefan Monnier 2016-06-27 12:32 ` Björn Lindqvist 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier @ 2016-06-27 8:31 UTC (permalink / raw) To: Björn Lindqvist; +Cc: help-gnu-emacs > when I type HELLO<tab> and emacs says (error "Please avoid it"). So my > rules function is triggered, which is good but the result isn't what I > want. No, I think the issue is in the grammar. What's your `factor-smie-grammar'? Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-27 8:31 ` Stefan Monnier @ 2016-06-27 12:32 ` Björn Lindqvist 2016-06-27 22:02 ` Stefan Monnier 0 siblings, 1 reply; 18+ messages in thread From: Björn Lindqvist @ 2016-06-27 12:32 UTC (permalink / raw) To: Stefan Monnier; +Cc: help-gnu-emacs Just an empty list: (defconst factor-smie-grammar (list)) 2016-06-27 10:31 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >> when I type HELLO<tab> and emacs says (error "Please avoid it"). So my >> rules function is triggered, which is good but the result isn't what I >> want. > > No, I think the issue is in the grammar. What's your `factor-smie-grammar'? > > > Stefan -- mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-27 12:32 ` Björn Lindqvist @ 2016-06-27 22:02 ` Stefan Monnier 2016-06-28 11:34 ` Björn Lindqvist 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier @ 2016-06-27 22:02 UTC (permalink / raw) To: Björn Lindqvist; +Cc: help-gnu-emacs > Just an empty list: > (defconst factor-smie-grammar (list)) No good. You need to define your grammar, otherwise SMIE doesn't have anything to work with. Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-27 22:02 ` Stefan Monnier @ 2016-06-28 11:34 ` Björn Lindqvist 2016-06-28 21:42 ` Stefan Monnier 0 siblings, 1 reply; 18+ messages in thread From: Björn Lindqvist @ 2016-06-28 11:34 UTC (permalink / raw) To: Stefan Monnier; +Cc: help-gnu-emacs Yes, I understand. But I'm completely at loss on how to do that or even getting started. I have seen what rules octave-mode has, but I don't know how to adapt that to my scenario (HELLO token begins indentation, BYE token ends it). 2016-06-28 0:02 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >> Just an empty list: >> (defconst factor-smie-grammar (list)) > > No good. You need to define your grammar, otherwise SMIE doesn't have > anything to work with. > > > Stefan -- mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-28 11:34 ` Björn Lindqvist @ 2016-06-28 21:42 ` Stefan Monnier 2016-06-28 22:30 ` Björn Lindqvist 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier @ 2016-06-28 21:42 UTC (permalink / raw) To: Björn Lindqvist; +Cc: help-gnu-emacs > Yes, I understand. But I'm completely at loss on how to do that or > even getting started. I have seen what rules octave-mode has, but I Have you looked at its grammar? That would probably be a better start for your grammar. > don't know how to adapt that to my scenario (HELLO token begins > indentation, BYE token ends it). So it sounds like (deconst factor-smie-grammar (smie-prec2->grammar (smie-bnf->prec2 '((exp ("HELLO" exp "BYE")))))) might be a good start. Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-28 21:42 ` Stefan Monnier @ 2016-06-28 22:30 ` Björn Lindqvist 2016-06-29 7:37 ` Stefan Monnier 0 siblings, 1 reply; 18+ messages in thread From: Björn Lindqvist @ 2016-06-28 22:30 UTC (permalink / raw) To: Stefan Monnier; +Cc: help-gnu-emacs Thank you. That makes some indentation happening, but what I get is (hoping gmail preserves leading whitespace): first HELLO HELLO foo BYE HELLO bla net neat BYE text more more BYE What I would like instead is: first HELLO HELLO foo BYE HELLO bla net neat BYE text more more BYE text 2016-06-28 23:42 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >> Yes, I understand. But I'm completely at loss on how to do that or >> even getting started. I have seen what rules octave-mode has, but I > > Have you looked at its grammar? That would probably be a better start > for your grammar. > >> don't know how to adapt that to my scenario (HELLO token begins >> indentation, BYE token ends it). > > So it sounds like > > (deconst factor-smie-grammar > (smie-prec2->grammar > (smie-bnf->prec2 > '((exp ("HELLO" exp "BYE")))))) > > might be a good start. > > > Stefan -- mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-28 22:30 ` Björn Lindqvist @ 2016-06-29 7:37 ` Stefan Monnier 2016-06-29 16:48 ` Björn Lindqvist 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier @ 2016-06-29 7:37 UTC (permalink / raw) To: help-gnu-emacs > HELLO > HELLO foo BYE > HELLO > bla > net > neat > BYE > text more > more > BYE That's expected: the third HELLO...BYE is indented as an argument of the first. Similarly to: (table->method) (arg1, arg2 ) [ Read the above, thinking that "(" is like HELLO and ")" is like "BYE". ] Similarly, "net" and "neat" are treated as arguments to "bla". A quick fix to that part would be to add an indentation rule along the lines of (`(:elem . arg) 0) or alternatively (`(:list-intro . ,_) t) Tho, if your language makes newlines significant (i.e. "bla\nnet" is not equivalent to "bla net"), then you might be better off changing the tokenizer (by providing appropriate :forward-token and :backward-token arguments to `smie-setup') so as to return an actual token for every newline encountered, after which you can add corresponding rules to the grammar. > HELLO > bla > net > neat > BYE To get the BYE indented this way, a quick-fix could be to add a rule like (`(:before . "BYE") 4) -- Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-29 7:37 ` Stefan Monnier @ 2016-06-29 16:48 ` Björn Lindqvist 2016-06-30 7:23 ` Stefan Monnier 0 siblings, 1 reply; 18+ messages in thread From: Björn Lindqvist @ 2016-06-29 16:48 UTC (permalink / raw) To: Stefan Monnier; +Cc: help-gnu-emacs I got it to work almost by experimenting with your suggestions. But it appears to do some kind of automatic aligning I don't want: HELLO one two three BYE That should instead have been: HELLO one two three BYE My language is not newline-significant. 2016-06-29 9:37 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >> HELLO >> HELLO foo BYE >> HELLO >> bla >> net >> neat >> BYE >> text more >> more >> BYE > > That's expected: the third HELLO...BYE is indented as an argument of > the first. Similarly to: > > (table->method) > (arg1, > arg2 > ) > > [ Read the above, thinking that "(" is like HELLO and ")" is like > "BYE". ] > > Similarly, "net" and "neat" are treated as arguments to "bla". > > A quick fix to that part would be to add an indentation rule along the > lines of > > (`(:elem . arg) 0) > > or alternatively > > (`(:list-intro . ,_) t) > > Tho, if your language makes newlines significant (i.e. "bla\nnet" is not > equivalent to "bla net"), then you might be better off changing the > tokenizer (by providing appropriate :forward-token and :backward-token > arguments to `smie-setup') so as to return an actual token for every > newline encountered, after which you can add corresponding rules to > the grammar. > >> HELLO >> bla >> net >> neat >> BYE > > To get the BYE indented this way, a quick-fix could be to add a rule > like > > (`(:before . "BYE") 4) > > > -- Stefan > > -- mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-29 16:48 ` Björn Lindqvist @ 2016-06-30 7:23 ` Stefan Monnier 2016-06-30 11:27 ` Björn Lindqvist 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier @ 2016-06-30 7:23 UTC (permalink / raw) To: Björn Lindqvist; +Cc: help-gnu-emacs > I got it to work almost by experimenting with your suggestions. But it > appears to do some kind of automatic aligning I don't want: > > HELLO one > two > three > BYE If one, two, and three are an arbitrary sequence of <...> bracketed by HELLO and BYE, then the above looks like the proper indentation to me. > That should instead have been: > > HELLO one > two > three > BYE The indentation here looks wrong to me unless "one" is special in the sense that it's some kind of argument to HELLO and "two" and "three" are an arbitrary sequence of <...> bracketed by "HELLO <something>" and "BYE". Which is it? And if it's the latter, how do you distinguish the separation between "one" and "two" (e.g. can the first line be something like "HELLO one two" where the "one two" is the argument to HELLO, and if so, how can you distinguish this case from the case where we have "HELLO one" and the subsequent "two" is part of the inner sequence)? Stefan > 2016-06-29 9:37 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >>> HELLO >>> HELLO foo BYE >>> HELLO >>> bla >>> net >>> neat >>> BYE >>> text more >>> more >>> BYE >> >> That's expected: the third HELLO...BYE is indented as an argument of >> the first. Similarly to: >> >> (table->method) >> (arg1, >> arg2 >> ) >> >> [ Read the above, thinking that "(" is like HELLO and ")" is like >> "BYE". ] >> >> Similarly, "net" and "neat" are treated as arguments to "bla". >> >> A quick fix to that part would be to add an indentation rule along the >> lines of >> >> (`(:elem . arg) 0) >> >> or alternatively >> >> (`(:list-intro . ,_) t) >> >> Tho, if your language makes newlines significant (i.e. "bla\nnet" is not >> equivalent to "bla net"), then you might be better off changing the >> tokenizer (by providing appropriate :forward-token and :backward-token >> arguments to `smie-setup') so as to return an actual token for every >> newline encountered, after which you can add corresponding rules to >> the grammar. >> >>> HELLO >>> bla >>> net >>> neat >>> BYE >> >> To get the BYE indented this way, a quick-fix could be to add a rule >> like >> >> (`(:before . "BYE") 4) >> >> >> -- Stefan >> >> > -- > mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-30 7:23 ` Stefan Monnier @ 2016-06-30 11:27 ` Björn Lindqvist 2016-06-30 18:49 ` Stefan Monnier 0 siblings, 1 reply; 18+ messages in thread From: Björn Lindqvist @ 2016-06-30 11:27 UTC (permalink / raw) To: Stefan Monnier; +Cc: help-gnu-emacs I'm not sure I understand. There are just two indentation-dependent tokens in my language; HELLO which increases indentation by four for subsequent lines and BYE which decreases indentation by four for subsequent lines. So yes, one, two, three is an arbitrary sequence and it could have been: HELLO three one four ten BYE eleven HELLO twelve BYE instead. This is what is required even if it doesn't look like proper indentation. :) In the real mode I'm working on (HELLO/BYE is a toy example) it makes more sense. 2016-06-30 9:23 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >> I got it to work almost by experimenting with your suggestions. But it >> appears to do some kind of automatic aligning I don't want: >> >> HELLO one >> two >> three >> BYE > > If one, two, and three are an arbitrary sequence of <...> bracketed by > HELLO and BYE, then the above looks like the proper indentation to me. > >> That should instead have been: >> >> HELLO one >> two >> three >> BYE > > The indentation here looks wrong to me unless "one" is special in the > sense that it's some kind of argument to HELLO and "two" and "three" are > an arbitrary sequence of <...> bracketed by "HELLO <something>" and "BYE". > > Which is it? And if it's the latter, how do you distinguish the > separation between "one" and "two" (e.g. can the first line be something > like "HELLO one two" where the "one two" is the argument to HELLO, and > if so, how can you distinguish this case from the case where we have > "HELLO one" and the subsequent "two" is part of the inner sequence)? > > > Stefan > > >> 2016-06-29 9:37 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >>>> HELLO >>>> HELLO foo BYE >>>> HELLO >>>> bla >>>> net >>>> neat >>>> BYE >>>> text more >>>> more >>>> BYE >>> >>> That's expected: the third HELLO...BYE is indented as an argument of >>> the first. Similarly to: >>> >>> (table->method) >>> (arg1, >>> arg2 >>> ) >>> >>> [ Read the above, thinking that "(" is like HELLO and ")" is like >>> "BYE". ] >>> >>> Similarly, "net" and "neat" are treated as arguments to "bla". >>> >>> A quick fix to that part would be to add an indentation rule along the >>> lines of >>> >>> (`(:elem . arg) 0) >>> >>> or alternatively >>> >>> (`(:list-intro . ,_) t) >>> >>> Tho, if your language makes newlines significant (i.e. "bla\nnet" is not >>> equivalent to "bla net"), then you might be better off changing the >>> tokenizer (by providing appropriate :forward-token and :backward-token >>> arguments to `smie-setup') so as to return an actual token for every >>> newline encountered, after which you can add corresponding rules to >>> the grammar. >>> >>>> HELLO >>>> bla >>>> net >>>> neat >>>> BYE >>> >>> To get the BYE indented this way, a quick-fix could be to add a rule >>> like >>> >>> (`(:before . "BYE") 4) >>> >>> >>> -- Stefan >>> >>> > > >> -- >> mvh/best regards Björn Lindqvist -- mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-30 11:27 ` Björn Lindqvist @ 2016-06-30 18:49 ` Stefan Monnier 2016-07-01 0:49 ` Björn Lindqvist 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier @ 2016-06-30 18:49 UTC (permalink / raw) To: Björn Lindqvist; +Cc: help-gnu-emacs > HELLO three one > four ten BYE > eleven HELLO > twelve > BYE This goes a bit against SMIE's default indentation principles, so it's going to take more efforts (IOW adding support for this kind of indentation is still on the todo list). Maybe something along the following lines would work: (defun my-indent-foo () (unless (looking-at "BYE\\_>") (save-excursion (let ((x nil)) (while (progn (setq x (smie-backward-sexp)) (null (car-safe x)))) (when (equal "HELLO" (nth 2 x)) (goto-char (nth 1 x)) (+ 4 (smie-indent-virtual))))))) and add (add-hook 'smie-indent-functions #'my-indent-foo nil t) in your major mode function. Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-06-30 18:49 ` Stefan Monnier @ 2016-07-01 0:49 ` Björn Lindqvist 2016-07-01 7:13 ` Stefan Monnier 0 siblings, 1 reply; 18+ messages in thread From: Björn Lindqvist @ 2016-07-01 0:49 UTC (permalink / raw) To: Stefan Monnier; +Cc: help-gnu-emacs Many thanks! That appears to work. But there is one problem. In a buffer with just this content: [ \ ] I get the error: (error "Bumped into unknown token") And another problem I'm having is trying to support multiple indentation start tokens: (deconst factor-smie-grammar (smie-prec2->grammar (smie-bnf->prec2 '((exp (("HELLO" "HALLO" "CIAO" "SALUT") exp "BYE")))))) My intent is to allow either of those four words to be used to start the indented block. I only need one ending token so there will be no alternative to BYE. Seems like it should be trivial to extend the BNF grammar in this way, but I can't figure out what syntax smie-bnf->prec2 expects for it. 2016-06-30 20:49 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >> HELLO three one >> four ten BYE >> eleven HELLO >> twelve >> BYE > > This goes a bit against SMIE's default indentation principles, so it's > going to take more efforts (IOW adding support for this kind of > indentation is still on the todo list). > > Maybe something along the following lines would work: > > (defun my-indent-foo () > (unless (looking-at "BYE\\_>") > (save-excursion > (let ((x nil)) > (while (progn (setq x (smie-backward-sexp)) > (null (car-safe x)))) > (when (equal "HELLO" (nth 2 x)) > (goto-char (nth 1 x)) > (+ 4 (smie-indent-virtual))))))) > and add > > (add-hook 'smie-indent-functions #'my-indent-foo nil t) > > in your major mode function. > > > Stefan -- mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-07-01 0:49 ` Björn Lindqvist @ 2016-07-01 7:13 ` Stefan Monnier 2016-07-01 19:28 ` Björn Lindqvist 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier @ 2016-07-01 7:13 UTC (permalink / raw) To: Björn Lindqvist; +Cc: help-gnu-emacs > Many thanks! That appears to work. But there is one problem. In a > buffer with just this content: > [ > \ > ] > I get the error: (error "Bumped into unknown token") You should either give a different syntax to the \ char in the syntax-table, or change the :forward-token and :backward-token functions so they do something with \ > (smie-bnf->prec2 > '((exp (("HELLO" "HALLO" "CIAO" "SALUT") exp "BYE")))))) One way to do that is: (smie-bnf->prec2 '((exp ("HELLO" exp "BYE") ("HALLO" exp "BYE") ("CIAO" exp "BYE") ("SALUT" exp "BYE")))))) Another is to change the :forward-token and :backward-token functions so they return the same string (e.g. "HELLO") when tokenizing any one of those. Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-07-01 7:13 ` Stefan Monnier @ 2016-07-01 19:28 ` Björn Lindqvist 2016-07-01 23:09 ` Stefan Monnier 0 siblings, 1 reply; 18+ messages in thread From: Björn Lindqvist @ 2016-07-01 19:28 UTC (permalink / raw) To: Stefan Monnier; +Cc: help-gnu-emacs I managed to write the forward and backward tokenization functions: (defun factor-smie-token (dir) (pcase dir ('forward (forward-comment (point-max))) ('backward (forward-comment (- (point))))) (let ((tok (buffer-substring-no-properties (point) (let ((syntax "w_\\\"")) (pcase dir ('forward (skip-syntax-forward syntax)) ('backward (skip-syntax-backward syntax))) (point))))) ;; Normalizes different indent starters. (cond ((string-match factor-smie-indents-regex tok) ":") (t tok)))) (defun factor-smie-forward-token () (factor-smie-token 'forward)) (defun factor-smie-backward-token () (factor-smie-token 'backward)) It works in 99% of the cases. But since almost any character can be part of a token, it doesn't work perfectly. E.g te]st(ab3 would be a perfectly valid variable name. I tried changing the syntax to "w_()\\\"" and that fixes the tokenization but then I lose the useful automatic indentation smie adds to opening- and closing bracket characters. E.g I'm happy that smie indents: [ neat { nice } ( good ) ] It's very nice. But the following two lines are not right: hi[there two They should be: hi[there two 2016-07-01 9:13 GMT+02:00 Stefan Monnier <monnier@iro.umontreal.ca>: >> Many thanks! That appears to work. But there is one problem. In a >> buffer with just this content: > >> [ >> \ >> ] > >> I get the error: (error "Bumped into unknown token") > > You should either give a different syntax to the \ char in the > syntax-table, or change the :forward-token and :backward-token functions > so they do something with \ > >> (smie-bnf->prec2 >> '((exp (("HELLO" "HALLO" "CIAO" "SALUT") exp "BYE")))))) > > One way to do that is: > > (smie-bnf->prec2 > '((exp ("HELLO" exp "BYE") > ("HALLO" exp "BYE") > ("CIAO" exp "BYE") > ("SALUT" exp "BYE")))))) > > Another is to change the :forward-token and :backward-token functions so > they return the same string (e.g. "HELLO") when tokenizing any one of those. > > > Stefan -- mvh/best regards Björn Lindqvist ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: SMIE examples or guides 2016-07-01 19:28 ` Björn Lindqvist @ 2016-07-01 23:09 ` Stefan Monnier 0 siblings, 0 replies; 18+ messages in thread From: Stefan Monnier @ 2016-07-01 23:09 UTC (permalink / raw) To: Björn Lindqvist; +Cc: help-gnu-emacs > [ > neat > { > nice > } > ( > good > ) > ] You want to add rules like ("[" exp "]") to your grammar, then. Or alternatively, refine your tokenizer so it returns "" when it finds a lone "[" or "]", i.e. only accept syntax "()" when it's part of a token, but not when it's the whole token. Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2016-07-01 23:09 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-06-19 2:57 SMIE examples or guides Björn Lindqvist 2016-06-20 3:21 ` Stefan Monnier 2016-06-26 12:23 ` Björn Lindqvist 2016-06-27 8:31 ` Stefan Monnier 2016-06-27 12:32 ` Björn Lindqvist 2016-06-27 22:02 ` Stefan Monnier 2016-06-28 11:34 ` Björn Lindqvist 2016-06-28 21:42 ` Stefan Monnier 2016-06-28 22:30 ` Björn Lindqvist 2016-06-29 7:37 ` Stefan Monnier 2016-06-29 16:48 ` Björn Lindqvist 2016-06-30 7:23 ` Stefan Monnier 2016-06-30 11:27 ` Björn Lindqvist 2016-06-30 18:49 ` Stefan Monnier 2016-07-01 0:49 ` Björn Lindqvist 2016-07-01 7:13 ` Stefan Monnier 2016-07-01 19:28 ` Björn Lindqvist 2016-07-01 23:09 ` Stefan Monnier
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).