r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Dialects] Questions about how to create dialects

Fork
9-Jan-2010
[409x3]
My goal was to create a language you can program in on paper
I suppose technically you can base-64 encode by working it out on 
paper, but I think it has moved out of the domain of being program 
source code at that point.
The parse dialect also cannot execute as is.  Thus are dialects.
Steeve
9-Jan-2010
[412]
ok the point is that you may be able to understand the code with 
normal human abilities
Fork
9-Jan-2010
[413x5]
Right.  And in 1 day of getting used to it, I can pretty easily translate 
the above Roman Numeral code as I read it
A little awkward, but, not so bad when compared to things that have 
disposed the entire program logic into constants like n=1;$.+=n/2-n%n=10**(494254%C/9)%4999while 
C=getc;p$.
Also it's not corrupting the language (much).  If you learn this 
"rebmu" dialect you'll be learning a useful language and your knowledge 
will transfer.  As opposed to GolfScript which is just garbage.
(But good for a CS class, or whatever.)
(As most joke languages are.)
Steeve
9-Jan-2010
[418]
There is a burden.

When you add Something inside a sequence, you may have to swap all 
the followings caps/tiny letters :-)
Fork
9-Jan-2010
[419x3]
True, but renaming variables is a burden as well.  As it happens, 
each numeric constant, symbol, or path operator breaks the chain 
so you get to start anew
aaBBccDDeeFFgg... if you really do have a long long uninterrupted 
chain of that nature then there's a problem.  But I bet usually a 
number or path or symbol would pop in there.
Anyway, I'm not very interested in the super estoeric algorithms 
but do note that people get upvoted significantly for small solutions 
in languages like J: http://en.wikipedia.org/wiki/J_(programming_language)
Steeve
9-Jan-2010
[422]
if each new word always begin with a capital letter, you don't have 
anymore the problem.
You just lost the compression of the ":" char. Not a so huge loss
Fork
9-Jan-2010
[423x2]
Problem is that single character words play a huge part in this
Every variable in your program in most cases will be only one letter.
Steeve
9-Jan-2010
[425x2]
So what ?
3A
ABC
 would mean [A B C] with this new system
Andreas
9-Jan-2010
[427x2]
and changing the case of text is something that can be relegated 
to a good editor :)
g~$ in vim, to switch case for everything from the cursor to the 
end of line
Fork
9-Jan-2010
[429]
Well you're free to work out an example of a better dialect but you'll 
be parsing URLs or something... like where I can do Ab to get a: 
b how would you get it?
Steeve
9-Jan-2010
[430]
A:B
Fork
9-Jan-2010
[431x3]
>> type? A:B
== url!
You're starting to tread on the question of taking away things and 
making a non-superset
And you added a character :)
Steeve
9-Jan-2010
[434]
Yes i added a character

but i don't have to take care of the correct alternation of uppercases
Fork
9-Jan-2010
[435]
A character here, a character there... pretty soon you're talking 
about real whitespace!  :)
Steeve
9-Jan-2010
[436]
:-)
Fork
9-Jan-2010
[437x6]
Implementation gets trickier if you're parsing urls, and you're impinging 
on the URL type at that point, which is an any-string and thus does 
give meaning to case.
My goal was to only muck with words, which Rebol binding has promised 
to ignore
Er, ignore case
There are other issues:
>> 'A:B
** Syntax error: invalid "word-lit" -- "A:B"
** Near: (line 1) 'A:B
>> 'AB:      
** Syntax error: invalid "word-lit" -- "'AB:"
** Near: (line 1) 'AB:
Steeve
9-Jan-2010
[443]
hey ! your parser is the weak point, it seems :-)
Fork
9-Jan-2010
[444x4]
>> unmush ['aB]
== ['a b:]
>> unmush ['aB]
== ['a b:]
That's the Rebol parser.  I'm not taking strings as input, I'm taking 
Rebol blocks.  It's a dialect.
If I were taking strings, sky's the limit... but, what's the point?
Steeve
9-Jan-2010
[448]
it doesn't bother, parse has not the limitations you pointed
Fork
9-Jan-2010
[449x2]
>> parse ['AB:] [to end]
** Syntax error: invalid "word-lit" -- "'AB:"
** Near: (line 1) parse ['AB:] [to end]
>> parse {'AB:} [to end]
== true
Steeve
9-Jan-2010
[451x2]
what is the interest to try to construct something which has no sense 
in Rebol
'AB: has no meaning
Fork
9-Jan-2010
[453x4]
I'm just playing devil's advocate for your suggestion to go putting 
colons in the input when the goal is to minimize source representation.
I showed you my answer to get ['a b:] in a brief notation
>> unmush ['aB]
== ['a b:]
From 5 chars down to 3, and it's legal to the Rebol parser.
Steeve
9-Jan-2010
[457x2]
ok i understand, i just proposed to avthe burden caused by a safe 
alternance of letter's casing
avthe=avoid