Of course, that part's easy. ntt =: verb def '5!:5{.;:''y''' NB. Noun To Text ntt;._2 noun define -.TAB a. i. '(`'3 a. i. '(`'3' 'open 'quote ) 'a. i. ''(`''3' 'a. i. ''(`''3''' '''open ''quote'
But it goes back to the original questions: 1. What is the source of these strings? _Where_ is your user typing them in? 2. What is processing these strings? If the answer to #1 is a file, or a GUI (e.g. wd, web interface, etc) or anywhere other than immex mode, the answer is easy. But I'm getting the sense that the very reason you want to quote these strings is so that J can process them in immex mode. You don't need them quoted for your own purposes. That is, you're trying to give your user access to the power of J (because it's so close to what your user needs already....) but you feel that out-of-the-box, J is a little too picky about input. That is, J is powerful, but not trivial to learn and use. So you want something like J, but simpler, easier. You want a "Simple J"; an "Easy J". Is that right? If so, does it sound familiar? Anyway, if that is what you're after (the user typing something J-like but not-quite-J into immex mode), then you need to commandeer the IJX session manager. Because, by definition, anything typed into the IJX session manager has to be a valid J sentence. But once you take over the REPL, you can do whatever you like; you can implement your own, J-like language. http://www.jsoftware.com/jwiki/RicSherlock/Temp/InteractivePrompt (Note in particular the caveats at the bottom of the page) http://www.jsoftware.com/jwiki/DanBron/Temp/REPL (A similar program) Which leads me to question #2: what other things does your language permit, that J would not, out-of-the-box? Because, once you solve your quoting problem, if you're still using ". (i.e., J) to process your strings, you're going to hit new hurdles. i =: 2 NB. User is typing this stuff in j =: 3 i j { i. 4 5 |syntax error | i j{i.4 5 |[-0] NB. ??? I'm a sad, confused user +:^:3 2 NB. RE told me about this power operator thing, it sounds so cool! +:^:3 2 NB. Darn, it's broken! Of course, I could be reading too much into your messages, and be totally off-base about this "J Lite" thing. If so, can you share the bigger picture of your use case? Who is the user, what is he doing, what are his objectives, what is his interface to your application, etc? -Dan -----Original Message----- From: programming-boun...@jsoftware.com [mailto:programming-boun...@jsoftware.com] On Behalf Of R.E. Boss Sent: Sunday, February 12, 2012 9:40 AM To: 'Programming forum' Subject: Re: [Jprogramming] quote problem The (input) string should be considered as one group (of chars). Quoting is needed if the first or the last (or both) is not a quote, all inside quotes should be doubled if they are not. R.E. Boss > -----Oorspronkelijk bericht----- > Van: programming-boun...@jsoftware.com [mailto:programming- > boun...@jsoftware.com] Namens Don Guinn > Verzonden: zondag 12 februari 2012 14:03 > Aan: Programming forum > Onderwerp: Re: [Jprogramming] quote problem > > Given the string contains several groups of non-blanks, would each group > need to be surrounded with quotes and quotes within it doubled if not a > number, or only if it contained one or more quotes? Or should the string be > considered as one group? Again, when would quoting be needed? > > On Sun, Feb 12, 2012 at 1:17 AM, R.E. Boss <r.e.b...@planet.nl> wrote: > > > The problem boils down to the fact that J requires a string (of chars) to > > be > > enclosed in (single) quotes and the inside quotes have to be doubled. > > (Contrary to a spreadsheet (e.g.) where a cell is of type char if it is not > > a number.) > > But what if I don't want bother a user with these requirements, she enters > > a > > string and my verb does the enclosing and doubling, if necessary? > > > > > > R.E. Boss > > > > > > > -----Oorspronkelijk bericht----- > > > Van: programming-boun...@jsoftware.com [mailto:programming- > > > boun...@jsoftware.com] Namens Dan Bron > > > Verzonden: zaterdag 11 februari 2012 20:35 > > > Aan: J Programming > > > Onderwerp: Re: [Jprogramming] quote problem > > > > > > Oh, just saw Henry's response and he interpreted your question > > differently. > > > > > > If you're not typing these strings in, then what is the source? And what > > is > > > processing them (is it ;: ? if it's ". there's more to worry about than > > proper > > > quoting). > > > > > > Anyway, if the strings are coming from e.g. a file and the trouble is > > with > > > parsing them using ;: (instead of evaluating them in the immex session), > > then > > > you could try something along the lines of (#~ 2 * '''' = ]) y (i.e. > > double > > > singleton quotes). > > > > > > -Dan > > > > > > Please excuse typos; composed on a handheld device. > > > > > > -----Original Message----- > > > From: Dan Bron <j...@bron.us> > > > Sender: programming-boun...@jsoftware.com > > > Date: Sat, 11 Feb 2012 14:05:16 > > > To: Programming forum<programming@jsoftware.com> > > > Reply-To: Programming forum <programming@jsoftware.com> > > > Subject: Re: [Jprogramming] quote problem > > > > > > Unlike C, where \ introduces an escape sequence within string liberals, > > in > > J, > > > the only special character in a literal is ' (single quote). > > > > > > So, to embed quotes in strings, double them up: a. i. '(`''3' . Of > > course, > > > recursively embedded quotes need quadrupling, octupling, etc (eg 'he > said > > > ''she said ''''yes'''', but she lied'', if you can believe that'). > > > > > > The syntax error in your first example is due to the juxtaposition of two > > > nouns, the string '(`' and the number 3 . > > > > > > -Dan > > > > > > > > > On Feb 11, 2012, at 1:04 PM, "R.E. Boss" <r.e.b...@planet.nl> wrote: > > > > > > > If I want to process an arbitrary string, I may encounter a string > > which > > > > might give a "syntax error" or an "open quote" message. > > > > > > > > How can I detect such a situation and how can I repair the given > > string? > > > > > > > > > > > > > > > > a. i. '(`'3 > > > > > > > > |syntax error > > > > > > > > | a. i.'(`'3 > > > > > > > > > > > > > > > > a. i. '(`'3' > > > > > > > > |open quote > > > > > > > > | a.i.'(`'3' > > > > > > > > | ^ > > > > > > > > > > > > > > > > > > > > > > > > R.E. Boss > > > > > > > > ---------------------------------------------------------------------- > > > > For information about J forums see > > > http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > > > For information about J forums see > http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > > > For information about J forums see > http://www.jsoftware.com/forums.htm > > > > ---------------------------------------------------------------------- > > For information about J forums see > http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm