D - [Language design] yet another notational error
- Manfred Nowak (10/10) Feb 10 2004 void main()
- davepermen (4/14) Feb 10 2004 use ****ing syntax highlighting!! :D
- Manfred Nowak (23/25) Feb 10 2004 I do not believe you. Do you know of a system or site where the time
- davepermen (27/50) Feb 10 2004 if its a real that is used, then its dark yellow, both the numbers, and ...
- Manfred Nowak (29/37) Feb 10 2004 You already told about your syntax highlighter. I know that you can
- davepermen (44/66) Feb 10 2004 all i want to state is your problem is a logic error. and those are the
- Manfred Nowak (14/16) Feb 11 2004 And why do you require, that your coding style is adopted by everyone?
- davepermen (23/39) Feb 11 2004 i just see no real life situation where this problem can occur, as i see...
- Manfred Nowak (357/357) Feb 11 2004 davepermen wrote:
- davepermen (4/361) Feb 11 2004 you act stupid.
- Brad Anderson (3/7) Feb 11 2004 Settle down, girls. Can't you just be okay with disagreeing? I'm wasti...
- davepermen (18/25) Feb 11 2004 shall i add a third case closed? :D
- J C Calvarese (14/17) Feb 11 2004 Since D has a syntax that's easy to parse, D users can develop their own...
- J Anderson (6/12) Feb 11 2004 Isn't there something like that for C/C++? Actually I think there's a
- Sam McCall (3/16) Feb 11 2004 Um, I think it's because walter has more difficult issues to deal with
- Manfred Nowak (14/16) Feb 11 2004 I see. Would you have had a look at his code, then you would have
- davepermen (3/19) Feb 11 2004 because he prefers that style?
- Walter (12/20) Feb 12 2004 Over the years I have slowly gravitated towards putting spaces around
- Manfred Nowak (14/17) Feb 12 2004 The problem is, that the so called syntax highlighters, as far as i have
- davepermen (17/34) Feb 13 2004 syntax highlighting is like an enhancement over the actual displayed tex...
- Manfred Nowak (69/71) Feb 13 2004 [...]
- davepermen (11/55) Feb 13 2004 before replying to all parts.. uh, what the *** is that code? is that d?...
- Manfred Nowak (6/7) Feb 13 2004 [...]
- davepermen (3/10) Feb 16 2004 uhm.. i normally just take my code:D garbage enough, hehe
- davepermen (44/83) Feb 13 2004 you're actually the first i hear that doesn't look at what he types.. ex...
- Manfred Nowak (7/10) Mar 09 2004 Meanwhile Walter has decided to disallow implicit conversion from
- Walter (4/11) Feb 13 2004 A ".." is eminently recognizable, it will not be confused with a floatin...
- C (5/15) Feb 10 2004 Im not sure what your trying to change. Your foo slicing is incorrect, ...
- Roel Mathys (5/30) Feb 10 2004 change? it'll be quite difficult, if I'm not mistaken this will compile,...
- C (6/36) Feb 10 2004 Oh i see , yowsa. I thought the compiler would catch it ... hmm maybe
- Juan C (7/17) Feb 10 2004 This would be why I was taught to _always_ put spaces between elements
- Manfred Nowak (9/13) Feb 10 2004 This would not help you, when you want to type `[ 1.3 ]', but your
- J C Calvarese (11/30) Feb 10 2004 Seriously...
- Manfred Nowak (6/8) Feb 10 2004 http://remus.rutgers.edu/~rhoads/Obfuscated_C/bright
- davepermen (8/16) Feb 10 2004 uh, yeah, show obfuscated examples to show how stupid the language is.
- J C Calvarese (9/16) Feb 10 2004 Come on. He didn't even remove the whitespace. Obviously, it's a hex
- Richard Krehbiel (5/21) Feb 12 2004 Oh, be serious.
- Sean Kelly (3/6) Feb 12 2004 How about LOGO? ;)
- Manfred Nowak (11/12) Feb 12 2004 [...]
- Richard Krehbiel (3/21) Feb 13 2004 So is describing a language that is resistant to obfuscation, you use
- Manfred Nowak (289/291) Feb 13 2004 %-6
- Walter (6/9) Feb 12 2004 I've had keyboards that started doing the stuttering after years of use.
- Serge K (19/26) Feb 12 2004 Ok, we can fight ".." problem with syntax highlighting and spare keyboar...
- J C Calvarese (5/10) Feb 12 2004 ··· --- ···
- Derek Parnell (5/46) Feb 12 2004 April comes early this year ;-)
- Manfred Nowak (8/13) Feb 12 2004 ButUseTheRlghT0ne: hTTp://wWw.kaUfmann.NO/roLanD/DVorak/inDex.html
- Walter (8/14) Feb 13 2004 same.
- Karl Bochert (8/12) Feb 15 2004 An obvious help (for Windows, at least) is to use a font designed for pr...
- Derek Parnell (5/20) Feb 15 2004 Pity that catexa's been hacked though.
- Derek Parnell (6/27) Feb 15 2004 There's another copy of these fonts at
- Karl Bochert (6/23) Feb 16 2004 Thanks for the info -- its been fixed.
- Manfred Nowak (5/6) Feb 14 2004 Yeah. Stomp me into the dust. It was a bad example anyway. Highlighting
- Walter (4/14) Feb 24 2004 I've changed the language so that floating point values are no longer
void main() { char[4] foo= "1234"; char[] bar; bar.length= 5; bar[0..2]= foo[1.3]; printf("%.*s\n", bar); } Would you also recognize it in millions of lines of code? So long.
Feb 10 2004
use ****ing syntax highlighting!! :D yes, i can see it definitely "Manfred Nowak" <svv1999 hotmail.com> schrieb im Newsbeitrag news:c0bb5v$238e$1 digitaldaemon.com...void main() { char[4] foo= "1234"; char[] bar; bar.length= 5; bar[0..2]= foo[1.3]; printf("%.*s\n", bar); } Would you also recognize it in millions of lines of code? So long.
Feb 10 2004
davepermen wrote:use ****ing syntax highlighting!! :D yes, i can see it definitelyI do not believe you. Do you know of a system or site where the time between download and upload of files is recorded? If such system or site exist I propose that you are not able to do the following: 1. you download a file that I would have produced in the following way: 1.a. defining a class `C' containing something like opSlice(int, int) and opIndex(real) 1.b. declaring a variable `c' of class `C' in the `main' function 1.c. randomly generating 2 million lines of code containing calls of the form c[int..int] and c[real] in the body of `main' 1.d. changing one call c[int..int] to c[real] _or_ one call c[real] to c[int..int] by inserting or deleting a `.' 2. you find in appropriate time the error, i.e. the line which I have changed in step 1.d., and correct it by either deleting or inserting a `.' 3. you proove the appropriate time of finding the error by uploading the corrected file 4. the file you uploaded and my unmodified randomly generated file are identical So long.
Feb 10 2004
if its a real that is used, then its dark yellow, both the numbers, and the . in between. if its a slice, its two dark yellow numbers, and two red dots in between. if i don't know the purpose of the code, then i should not touch it. but even so. i can quicky seen what is written. it can still take ages to detect if it's right, or wrong, what is written. but that can be the case everytime. fact is, i have no problems determining if its opSlice or opIndex(real). determining if something is a bug, that is another story. most the time, in this situation, it will yield a bug, because it simply doesn't work (opIndex doesn't take a real, returnvalues are different (array against one value)), but of course, it can be made up to show an example where it does work. but you're mixing two points: a) its not visible to determine the difference b) thus its very difficult to find the bug a) is not true, i can see it clearly. and if you can't set your dev-env to make it visible, then you have a serious problem. b) most the time it isn't difficult to find that bug. but the difficulty of finding a bug is not depending on the fact of a, the readability. it's only based on managability. and now, have fun searching even more such stupid bugs. or get some real stuff done, and show us examples on what bugs happen, and you have difficulties to find. trying to solve those directly by the language is more useful. oh, and, enable ****ing syntax highlighting. "Manfred Nowak" <svv1999 hotmail.com> schrieb im Newsbeitrag news:c0br6p$2ud9$1 digitaldaemon.com...davepermen wrote:use ****ing syntax highlighting!! :D yes, i can see it definitelyI do not believe you. Do you know of a system or site where the time between download and upload of files is recorded? If such system or site exist I propose that you are not able to do the following: 1. you download a file that I would have produced in the following way: 1.a. defining a class `C' containing something like opSlice(int, int) and opIndex(real) 1.b. declaring a variable `c' of class `C' in the `main' function 1.c. randomly generating 2 million lines of code containing calls of the form c[int..int] and c[real] in the body of `main' 1.d. changing one call c[int..int] to c[real] _or_ one call c[real] to c[int..int] by inserting or deleting a `.' 2. you find in appropriate time the error, i.e. the line which I have changed in step 1.d., and correct it by either deleting or inserting a `.' 3. you proove the appropriate time of finding the error by uploading the corrected file 4. the file you uploaded and my unmodified randomly generated file are identical So long.
Feb 10 2004
davepermen wrote:if its a real that is used, then its dark yellow, both the numbers, and the . in between. if its a slice, its two dark yellow numbers, and two red dots in between.You already told about your syntax highlighter. I know that you can distinguish between `.', `..' and `,'. But that does only help you out if you already know, that there is an error. Why do you think dmd is still buggy in version 79? Do you think, that Walter does not use a syntax highlighter?if i don't know the purpose of the code, then i should not touch it. but even so. i can quicky seen what is written. it can still take ages to detect if it's right, or wrong, what is written.Do I remember the GPL correctly, that it states that the sources realeased under it do not fit for any particular use? Consequently you do not touch any GPL-ed software? [...]or get some real stuff doneI see that you are a man of action. But men of action seldomly decide what tools to take, when organizing a team of lets assume 2000 IT professionals. And the management of such a team must be prepared for the simple question of its board of directors or supervisory board "why did you choose this tool" in case something went seriously wrong. A manager might very well get as red as a beetroot if it turns out, that the QA team gave out a warning in time. Last time I did that, Smalltalk was cancelled.and show us examples on what bugs happen, and you have difficulties to find.Are you shure, that you got my messages right? The bugs that are detected by the coder alone are of no problem. Bugs that pass coding, walkthroughs, code reviews, code integration and whatever else is used to assure quality and finally reach the released product are the problem. In my simple example changing the declaration of `foo' to `char[4] foo= "1221";' could render the bug undetected, because then the output `22' would be identical to the expected output. Do you really believe, that the russian aerospace agency did not make any QA for its mars probe that finally crashed in 1971? So long.
Feb 10 2004
You already told about your syntax highlighter. I know that you can distinguish between `.', `..' and `,'. But that does only help you out if you already know, that there is an error. Why do you think dmd is still buggy in version 79? Do you think, that Walter does not use a syntax highlighter?all i want to state is your problem is a logic error. and those are the errors that can, from time to time, let mars-probes crash. if it's NOT a logic error, but a typing error, i immediately spot the error while typing. that is what the syntax highlighting is made for. i will never have an error like [1.2] instead of [1..2] or vice versa as a TYPO. and thats what you want to warn that could happen to come, and pass because it can get compiled. this, in a good dev-env, will never be a typo. it can still be a logic error, but logic errors can be in every statement. a language cannot prevent all sort of typos. it can prevent most. good dev-tools can help for the rest.Do I remember the GPL correctly, that it states that the sources realeased under it do not fit for any particular use? Consequently you do not touch any GPL-ed software?in general, no. most the time i just use it as a lib, with headers (in c++), or as converted lib, with rewritten d library "headers" (in D). i normally don't work with the actual code of such libs, no. i prefer to bugreport and let the coders that work with the lib daily do the job. they know it bether.I see that you are a man of action. But men of action seldomly decide what tools to take, when organizing a team of lets assume 2000 IT professionals. And the management of such a team must be prepared for the simple question of its board of directors or supervisory board "why did you choose this tool" in case something went seriously wrong. A manager might very well get as red as a beetroot if it turns out, that the QA team gave out a warning in time. Last time I did that, Smalltalk was cancelled.uhm.. i'm talking about a ****ing texteditor with colours instead of notepad. it's their job. and the management doesn't ever need to bother. i don't know of any ide that does not have syntax highlighting. the only case is, if you don't have an ide, and have to use something like notepad. and there, replacing it with a notepad that has colours is something that doesn't mean a lot of change, can be made for free, the management can sure be aranged to support it (just tell it about the big COBOL issue and how syntax highlighting could possibly have prevented it and they will love you). and the ones that use it in your company will hell-fast adopt it. they have now the choise to go to Start->Programs->Notepad, or Start->Programs->TextPad, to do the same, in exactly the same way. one time with, one time without, colours.Are you shure, that you got my messages right? The bugs that are detected by the coder alone are of no problem. Bugs that pass coding, walkthroughs, code reviews, code integration and whatever else is used to assure quality and finally reach the released product are the problem.you always show us possible typos that can pass and result in big bugs. i always can show you that those things don't happen as typos in a normal dev-environment. if it's wrong, then it's a logic error, a.k.a. a REAL error. as such, nothing can prevent it from slipping trough. it can result in no problem, in strange crashes, in wrong data, etc. but thats not a problem of this certain case, but programming in general.Do you really believe, that the russian aerospace agency did not make any QA for its mars probe that finally crashed in 1971?do you really believe we live in 1971? show me one place where we use such primitive tools to work with. i know no place where you can't use a windows or linux or mac or what ever gui to work in and develop, and then up/download the compiled code to your prefered device. and for all those platforms with their guis, there do exist (thanks, scintilla:D), syntax hightighting notepads. this is a standard today. you may or may not adopt it. fact is, most people use msvc, and they will never step back to non-coloured coding.
Feb 10 2004
davepermen wrote: [...]if it's NOT a logic error, but a typing error, i immediately spot the error while typing.And why do you require, that your coding style is adopted by everyone? Not allowing for example data typists to transfer data from paper directly into code? I am getting tired of this discussion: as far as I understand you, you do not bring up any arguments that the tokenizing of D must stay as it is; you agree, that typos of the form pointed out may happen, but you insist, that other tools surrounding the main tool `dmd' will help to capture them. To me this is like wanting to drive a car built before 1971 with nearly no passive safety but equipping it with an electronic approaching warner and expounding, that the digital display of that device will clearly expose every danger when monitored constantly. So long.
Feb 11 2004
i just see no real life situation where this problem can occur, as i see no point in using non-suitable tools.. there is a reason we can display different fonts, colours, images, etc. they help us everywhere, as they do in coding. i don't see your point simply. i simply don't. if its a typing error you want to prevent, fine. if it's a logic error, you can't prevent it. they can never be. but for the typing error i gave you a simple fact. today is not the day of console based edit, or vi, but the days of emacs, visual studio, textpad, dide, whatever. that moodens your point. it doesn't make it non-valid. it just makes it much less important than you may want it to be. if you get tired, leave, or bring up reasons why it really is a problem. i still haven't seen a situation where it in fact can be an issue. and in what way do i force my coding style to everyone?. this is not about coding style, just about the program you use to edit simple plain text files. give me one reason to not use a syntax highlighting editor instead of a non-syntax hightlighting. or places where we could not use one. this has nothing to do with coding style. it's about proper tools for your job. as you choose the right language for your task. "Manfred Nowak" <svv1999 hotmail.com> schrieb im Newsbeitrag news:c0dash$2drh$1 digitaldaemon.com...davepermen wrote: [...]typing.if it's NOT a logic error, but a typing error, i immediately spot the error whileAnd why do you require, that your coding style is adopted by everyone? Not allowing for example data typists to transfer data from paper directly into code? I am getting tired of this discussion: as far as I understand you, you do not bring up any arguments that the tokenizing of D must stay as it is; you agree, that typos of the form pointed out may happen, but you insist, that other tools surrounding the main tool `dmd' will help to capturethem.To me this is like wanting to drive a car built before 1971 with nearly no passive safety but equipping it with an electronic approaching warner and expounding, that the digital display of that device will clearly expose every danger when monitored constantly. So long.
Feb 11 2004
davepermen wrote: [I do not see a problem] Not beeing able to recognize a problem is a non argument. Also enforced, you do not come up with a counter example that requires a call to look like `(1,2)', a slice to look like `[1..2]' or even an assignment to look like `v=1'. If you think accompanying tools can and should take off the burdon of a proper syntax from a language, then take the following list of error messages and convince at least Walter to no longer maintain it: !(TemplateArgumentList) expected following TemplateIdentifier '%s' #line integer ["filespec"]\n expected %p has no semantic routine %s %s is deprecated %s '%s' is not a variable %s does not have a boolean value %s has no value %s is not a field %s is not a field of %s %s is not a template %s is not a template %s is not a template declaration %s is not an expression %s is not an expression %s is not an expression %s is used as a type %s must be a function %s must be an array or pointer type, not %s %s.%s is private '%s' is not a member of '%s' '%s' is not a scalar, it is a %s '%s' is not an arithmetic type '%s' is not an integral type '%s' is not an lvalue '%s' must be an interface ';' expected ';' expected after template instance ';' expected after template instance, not %s ';' expected following module declaration instead of %s '=' does not give a boolean result 'super' is only allowed in non-static member functions 'this' is only allowed in non-static member functions 'this' is required, but %s is not a base class of %s (%s) does not match argument types (%s) (%s) is false (condition) expected after version (condition) expected following version (identifier) following 'out' expected, not %s ) expected instead of '%s' ... not allowed in delete function parameter list a struct is not a valid initializer for a %s alias cannot have initializer align %d must be a power of 2 anonymous classes not allowed apply() function for %s must return an int argument expected for switch '%s' array comparison type mismatch, %s vs %s array index %lld is out of bounds [0..%lld] array index [%lld] is outside array bounds [0 .. %lld] asm statements must end in ';' at least one argument of type uint expected bad addr mode bad operand bad type/size of operands '%s' base %s is forward referenced base classes expected following ':' base type must be class or interface, not %s basic type expected, not %s binary digit expected binary-exponent-part required break is not inside a loop or switch can only * a pointer, not a '%s' can only catch class objects, not '%s' Can only concatenate arrays Can only concatenate arrays, not (%s ~ %s) can only synchronize on class objects, not '%s' can only throw class objects, not type %s can only throw classes, not %s can't have array of %s can't have associative array key of %s can't have associative array of %s Can't run '%s', check PATH can't subtract pointer from %s cannot access frame of function %s cannot assign to static array %s cannot cast %s to %s cannot cast %s to %s since sizes don't line up cannot cast from %s to %s cannot change reference to static array '%s' cannot convert string literal to void* cannot create instance of abstract class %s cannot create instance of interface %s cannot declare template at function scope cannot delete %s cannot goto forward into different try block level cannot goto into try block cannot have array of %s cannot have array of auto %s cannot have out or inout argument of bit in array cannot have out or inout parameter of type %s cannot have parameter of type %s cannot implicitly convert %s to %s cannot modify const variable '%s' cannot modify parameter '%s' in contract cannot modify slice %s cannot override final function %s cannot resolve forward reference cannot return expression from constructor cannot return value from void function cannot take address of bit in array cannot use array to initialize %s case %s not found case '%s' is not a string case not in switch statement catch or finally expected following try character entity out of range character is truncated class constructor call must be in a constructor comma expected separating array initializers, not %s comma expected separating field initializers command line length of %d is too long conflicts with %s.%s at %s constructor calls not allowed in loops or after labels constructors only are for class definitions continue is not inside a loop cyclic constructor call declaration %s is already defined declaration %s.%s is already defined declaration expected following attribute, not ';' Declaration expected, not '%s' default not in switch statement delegates are only for non-static functions delete does not give a boolean result destructors only are for class definitions does not match any template declaration duplicate case %s in switch statement duplicate initializations for index %d duplicate union initialization for %s duplicate union initialization for %s enclosing label '%s' for break not found enclosing label '%s' for continue not found end of file before closing %c of string end of file before closing --> of comment end of file before end of character entity enum %s must have at least one member enum member expected escape hex sequence has %d hex digits instead of %d expected %d arguments, not %d exponent expected expression (%s) has no type expression expected, not '%s' field %s of %s already initialized field not allowed in interface first argument must be type uint, not %s Floating point constant expression expected instead of %s floating point expected for condition foreach: %s is not an aggregate type foreach: %s is not an array of %s foreach: index cannot be inout foreach: index must be type %s, not %s foreach: key cannot be inout foreach: key cannot be out foreach: key type must be int or uint, not %s foreach: value cannot be out and type bit foreach: value must be type %s, not %s foreach: value of UTF conversion cannot be inout forward reference of base class %s forward reference to template declaration %s found '%s' instead of array initializer found '%s' instead of statement found '%s' when expecting '%s' found '%s' when expecting '%s' following '%s' found '%s' when expecting identifier following '%s.' function %s does not override any function body is not abstract in interface %s function expected before (), not '%s' function expected to return a value of type %s functions cannot be const or auto functions cannot return auto %s functions cannot return static array %s globals, statics, fields, inout and out parameters cannot be auto goto case not in switch statement goto default not in switch statement Hex digit expected, not '%c' identifier '%s' is not defined identifier '%s' is not defined identifier '%s' of '%s' is not defined identifier expected following '.' instead of '%s' identifier expected following '.', not '%s' Identifier expected following (type). Identifier expected following cast(type). Identifier expected following goto Identifier expected following import Identifier expected following module Identifier expected following package Identifier expected following package Identifier expected for template parameter identifier expected not struct identifier or integer expected, not %s illegal UTF-16 value illegal UTF-16 value %04x incompatible types for ((%s) %s (%s)): '%s' and '%s' incompatible types for array[range], had %s[] index is not a type or an expression Integer constant expression expected instead of %s integer expected integer expected, not %s integer overflow integral type expected for value-parameter, not %s interface function %s.%s is not implemented invalid numeric character reference invalid UCS-32 char \U%08x invalid UTF-8 sequence invalid UTF-8 sequence invariants only are for struct/union/class definitions is forward referenced is in multiple packages %s is in multiply defined is not a per-instance initializable field is not a static and cannot have static initializer Label '%s' already defined label '%s' has no break label '%s' has no continue label expected linkage doesn't match interface function matches more than one template declaration matching '}' expected, not %s matching '}' expected, not end of file member %s is not accessible members expected members of template declaration expected module and package have the same name multiple constructor calls multiple declarations must have the same type, not %s and %s multiple delete's for class %s multiple delete's for struct %s multiple destructors for class %s multiple source files, but only one .obj name must use body keyword after in or out need 'this' to access member %s need size of rightmost array, not type %s negative array index %s negative index %lld for static array new allocators only are for class or struct definitions new can only create structs, arrays or class objects, not %s's no allocator for %s no base class for %s no case statement following goto case; no constructor for %s no definition for static %s No expression copy for: %s no identifier for declarator no identifier for parameter %d of %s no identifier for template value parameter no property '%s' for type '%s' no super class constructor for %s no [] operator overload for type %s non-constant expression %s non-hex character '%c' nops expected number is not representable Octal digit expected odd length of UTF-16 char source %u odd length of UTF-32 char source %u odd number (%d) of hex characters in hex string one argument of type void* expected one argument of type void* expected, not %s only fields allowed in anonymous struct only one or two arguments for array foreach only one or two arguments for associative array foreach opcode expected, not %s out result %s is already defined overlapping initialization for struct %s.%s overloads %s and %s both match argument list for %s overrides but is not covariant with %s package and module have the same name parameter %s.%s is already defined parameter '%s' multiply defined parameters must be main() or main(char[][] args) parenthesized TemplateParameterList expected following TemplateIdentifier pointer expected before ->, not '%s' pragma(identifier expected pragma(identifier expected PragmaStatement::toCBuffer() ptr expected redundant 'in' statement redundant 'out' statement redundant storage class '%s' reference to auto class must be auto return statements cannot be in contracts return value expected return without calling constructor rvalue of in expression must be an associative array, not %s semicolon expected semicolon expected following function declaration semicolon expected to close %s declaration semicolon expected, not '%s' source file name '%s' must have .%s extension special function not allowed in interface %s special member functions not allowed for %ss statement expected to be { }, not %s string expected for pragma msg, not '%s' string expected for pragma msg, not '%s' StringExp::toDt(type = %s) struct %s is forward referenced struct member expected super class constructor call must be in a constructor surrogate UTF-16 high value %04x at EOF surrogate UTF-16 high value past end of string surrogate UTF-16 low value %04x out of range surrogate UTF-16 low value out of range switch statement already has a default synchronized function %s must be a member of a class template %s is not a member of %s template identifier %s is not a member of %s template identifier %s is not a member of %s template member expected TemplateIdentifier expected following instance TemplateIdentifier expected following template Throw statements cannot be in contracts too many initializers %d for array[%d] too many initializers for %s type %s is not an expression undefined escape hex sequence \%c undefined escape sequence \%c undefined identifier %s undefined identifier '%s' undefined label %s unexpected identifer '%s' in declarator unknown operand for floating point instruction unpaired surrogate UTF-16 value unpaired surrogate UTF-16 value %04x unrecognized declaration unrecognized file extension %s unrecognized pragma(%s) unrecognized pragma(%s) unrecognized switch '%s' unrecognized token unsupported char '%c' unsupported char 0x%02x unterminated /* */ comment unterminated /+ +/ comment unterminated character constant unterminated string constant starting at %s use '{ }' for an empty statement, not a ';' UTF-32 value %08x greater than 0x10FFFF valid linkage identifiers are D, C, C++, Pascal, Windows variable %s cannot be synchronized void functions have no result void has no value voids have no value voids have no value with expressions must be class objects, not '%s' \%c sequence must be followed by %d hex characters ] expected instead of '%s' { enum members } expected So long.
Feb 11 2004
you act stupid. case closed. "Manfred Nowak" <svv1999 hotmail.com> schrieb im Newsbeitrag news:c0e095$hlr$1 digitaldaemon.com...davepermen wrote: [I do not see a problem] Not beeing able to recognize a problem is a non argument. Also enforced, you do not come up with a counter example that requires a call to look like `(1,2)', a slice to look like `[1..2]' or even an assignment to look like `v=1'. If you think accompanying tools can and should take off the burdon of a proper syntax from a language, then take the following list of error messages and convince at least Walter to no longer maintain it: !(TemplateArgumentList) expected following TemplateIdentifier '%s' #line integer ["filespec"]\n expected %p has no semantic routine %s %s is deprecated %s '%s' is not a variable %s does not have a boolean value %s has no value %s is not a field %s is not a field of %s %s is not a template %s is not a template %s is not a template declaration %s is not an expression %s is not an expression %s is not an expression %s is used as a type %s must be a function %s must be an array or pointer type, not %s %s.%s is private '%s' is not a member of '%s' '%s' is not a scalar, it is a %s '%s' is not an arithmetic type '%s' is not an integral type '%s' is not an lvalue '%s' must be an interface ';' expected ';' expected after template instance ';' expected after template instance, not %s ';' expected following module declaration instead of %s '=' does not give a boolean result 'super' is only allowed in non-static member functions 'this' is only allowed in non-static member functions 'this' is required, but %s is not a base class of %s (%s) does not match argument types (%s) (%s) is false (condition) expected after version (condition) expected following version (identifier) following 'out' expected, not %s ) expected instead of '%s' ... not allowed in delete function parameter list a struct is not a valid initializer for a %s alias cannot have initializer align %d must be a power of 2 anonymous classes not allowed apply() function for %s must return an int argument expected for switch '%s' array comparison type mismatch, %s vs %s array index %lld is out of bounds [0..%lld] array index [%lld] is outside array bounds [0 .. %lld] asm statements must end in ';' at least one argument of type uint expected bad addr mode bad operand bad type/size of operands '%s' base %s is forward referenced base classes expected following ':' base type must be class or interface, not %s basic type expected, not %s binary digit expected binary-exponent-part required break is not inside a loop or switch can only * a pointer, not a '%s' can only catch class objects, not '%s' Can only concatenate arrays Can only concatenate arrays, not (%s ~ %s) can only synchronize on class objects, not '%s' can only throw class objects, not type %s can only throw classes, not %s can't have array of %s can't have associative array key of %s can't have associative array of %s Can't run '%s', check PATH can't subtract pointer from %s cannot access frame of function %s cannot assign to static array %s cannot cast %s to %s cannot cast %s to %s since sizes don't line up cannot cast from %s to %s cannot change reference to static array '%s' cannot convert string literal to void* cannot create instance of abstract class %s cannot create instance of interface %s cannot declare template at function scope cannot delete %s cannot goto forward into different try block level cannot goto into try block cannot have array of %s cannot have array of auto %s cannot have out or inout argument of bit in array cannot have out or inout parameter of type %s cannot have parameter of type %s cannot implicitly convert %s to %s cannot modify const variable '%s' cannot modify parameter '%s' in contract cannot modify slice %s cannot override final function %s cannot resolve forward reference cannot return expression from constructor cannot return value from void function cannot take address of bit in array cannot use array to initialize %s case %s not found case '%s' is not a string case not in switch statement catch or finally expected following try character entity out of range character is truncated class constructor call must be in a constructor comma expected separating array initializers, not %s comma expected separating field initializers command line length of %d is too long conflicts with %s.%s at %s constructor calls not allowed in loops or after labels constructors only are for class definitions continue is not inside a loop cyclic constructor call declaration %s is already defined declaration %s.%s is already defined declaration expected following attribute, not ';' Declaration expected, not '%s' default not in switch statement delegates are only for non-static functions delete does not give a boolean result destructors only are for class definitions does not match any template declaration duplicate case %s in switch statement duplicate initializations for index %d duplicate union initialization for %s duplicate union initialization for %s enclosing label '%s' for break not found enclosing label '%s' for continue not found end of file before closing %c of string end of file before closing --> of comment end of file before end of character entity enum %s must have at least one member enum member expected escape hex sequence has %d hex digits instead of %d expected %d arguments, not %d exponent expected expression (%s) has no type expression expected, not '%s' field %s of %s already initialized field not allowed in interface first argument must be type uint, not %s Floating point constant expression expected instead of %s floating point expected for condition foreach: %s is not an aggregate type foreach: %s is not an array of %s foreach: index cannot be inout foreach: index must be type %s, not %s foreach: key cannot be inout foreach: key cannot be out foreach: key type must be int or uint, not %s foreach: value cannot be out and type bit foreach: value must be type %s, not %s foreach: value of UTF conversion cannot be inout forward reference of base class %s forward reference to template declaration %s found '%s' instead of array initializer found '%s' instead of statement found '%s' when expecting '%s' found '%s' when expecting '%s' following '%s' found '%s' when expecting identifier following '%s.' function %s does not override any function body is not abstract in interface %s function expected before (), not '%s' function expected to return a value of type %s functions cannot be const or auto functions cannot return auto %s functions cannot return static array %s globals, statics, fields, inout and out parameters cannot be auto goto case not in switch statement goto default not in switch statement Hex digit expected, not '%c' identifier '%s' is not defined identifier '%s' is not defined identifier '%s' of '%s' is not defined identifier expected following '.' instead of '%s' identifier expected following '.', not '%s' Identifier expected following (type). Identifier expected following cast(type). Identifier expected following goto Identifier expected following import Identifier expected following module Identifier expected following package Identifier expected following package Identifier expected for template parameter identifier expected not struct identifier or integer expected, not %s illegal UTF-16 value illegal UTF-16 value %04x incompatible types for ((%s) %s (%s)): '%s' and '%s' incompatible types for array[range], had %s[] index is not a type or an expression Integer constant expression expected instead of %s integer expected integer expected, not %s integer overflow integral type expected for value-parameter, not %s interface function %s.%s is not implemented invalid numeric character reference invalid UCS-32 char \U%08x invalid UTF-8 sequence invalid UTF-8 sequence invariants only are for struct/union/class definitions is forward referenced is in multiple packages %s is in multiply defined is not a per-instance initializable field is not a static and cannot have static initializer Label '%s' already defined label '%s' has no break label '%s' has no continue label expected linkage doesn't match interface function matches more than one template declaration matching '}' expected, not %s matching '}' expected, not end of file member %s is not accessible members expected members of template declaration expected module and package have the same name multiple constructor calls multiple declarations must have the same type, not %s and %s multiple delete's for class %s multiple delete's for struct %s multiple destructors for class %s multiple source files, but only one .obj name must use body keyword after in or out need 'this' to access member %s need size of rightmost array, not type %s negative array index %s negative index %lld for static array new allocators only are for class or struct definitions new can only create structs, arrays or class objects, not %s's no allocator for %s no base class for %s no case statement following goto case; no constructor for %s no definition for static %s No expression copy for: %s no identifier for declarator no identifier for parameter %d of %s no identifier for template value parameter no property '%s' for type '%s' no super class constructor for %s no [] operator overload for type %s non-constant expression %s non-hex character '%c' nops expected number is not representable Octal digit expected odd length of UTF-16 char source %u odd length of UTF-32 char source %u odd number (%d) of hex characters in hex string one argument of type void* expected one argument of type void* expected, not %s only fields allowed in anonymous struct only one or two arguments for array foreach only one or two arguments for associative array foreach opcode expected, not %s out result %s is already defined overlapping initialization for struct %s.%s overloads %s and %s both match argument list for %s overrides but is not covariant with %s package and module have the same name parameter %s.%s is already defined parameter '%s' multiply defined parameters must be main() or main(char[][] args) parenthesized TemplateParameterList expected following TemplateIdentifier pointer expected before ->, not '%s' pragma(identifier expected pragma(identifier expected PragmaStatement::toCBuffer() ptr expected redundant 'in' statement redundant 'out' statement redundant storage class '%s' reference to auto class must be auto return statements cannot be in contracts return value expected return without calling constructor rvalue of in expression must be an associative array, not %s semicolon expected semicolon expected following function declaration semicolon expected to close %s declaration semicolon expected, not '%s' source file name '%s' must have .%s extension special function not allowed in interface %s special member functions not allowed for %ss statement expected to be { }, not %s string expected for pragma msg, not '%s' string expected for pragma msg, not '%s' StringExp::toDt(type = %s) struct %s is forward referenced struct member expected super class constructor call must be in a constructor surrogate UTF-16 high value %04x at EOF surrogate UTF-16 high value past end of string surrogate UTF-16 low value %04x out of range surrogate UTF-16 low value out of range switch statement already has a default synchronized function %s must be a member of a class template %s is not a member of %s template identifier %s is not a member of %s template identifier %s is not a member of %s template member expected TemplateIdentifier expected following instance TemplateIdentifier expected following template Throw statements cannot be in contracts too many initializers %d for array[%d] too many initializers for %s type %s is not an expression undefined escape hex sequence \%c undefined escape sequence \%c undefined identifier %s undefined identifier '%s' undefined label %s unexpected identifer '%s' in declarator unknown operand for floating point instruction unpaired surrogate UTF-16 value unpaired surrogate UTF-16 value %04x unrecognized declaration unrecognized file extension %s unrecognized pragma(%s) unrecognized pragma(%s) unrecognized switch '%s' unrecognized token unsupported char '%c' unsupported char 0x%02x unterminated /* */ comment unterminated /+ +/ comment unterminated character constant unterminated string constant starting at %s use '{ }' for an empty statement, not a ';' UTF-32 value %08x greater than 0x10FFFF valid linkage identifiers are D, C, C++, Pascal, Windows variable %s cannot be synchronized void functions have no result void has no value voids have no value voids have no value with expressions must be class objects, not '%s' \%c sequence must be followed by %d hex characters ] expected instead of '%s' { enum members } expected So long.
Feb 11 2004
davepermen wrote:you act stupid. case closed.Settle down, girls. Can't you just be okay with disagreeing? I'm wasting time reading these posts. I get it that you two do things differently. Case closed.
Feb 11 2004
shall i add a third case closed? :D no, definitely. i stated manfred is right. i just think it's not important or dangerous. the rest was talking besides eachother. i haven't answered his questions really, so didn't he replied to mine.. i'm sorry. sorry manfred sorry brad i hope it was at least a good read:D greetings to all. i hope we find some midway.. but walter does not want to have warnings in the dmd.. well.. as it can not be an error, what should be done now? "Brad Anderson" <brad sankaty.dot.com> schrieb im Newsbeitrag news:c0e2m4$li9$1 digitaldaemon.com...davepermen wrote:timeyou act stupid. case closed.Settle down, girls. Can't you just be okay with disagreeing? I'm wastingreading these posts. I get it that you two do things differently. Caseclosed.
Feb 11 2004
davepermen wrote: [...]i hope we find some midway.. but walter does not want to have warnings in the dmd..Since D has a syntax that's easy to parse, D users can develop their own tools to parse the code and look for Dangerous Situations. We could add our warnings by running a program on the code before we submit it to the compiler (let's call it dcheck). If dcheck rejects the code, we could fix it before we try to compile it. If the person who writes dcheck is worried about nearly everything, dcheck can check many, many possible problems. If someone isn't worried about any of these possible problems, he doesn't have to use dcheck at all. Now everyone's happy. :) -- Justin http://jcc_7.tripod.com/d/
Feb 11 2004
J C Calvarese wrote:If dcheck rejects the code, we could fix it before we try to compile it. If the person who writes dcheck is worried about nearly everything, dcheck can check many, many possible problems. If someone isn't worried about any of these possible problems, he doesn't have to use dcheck at all. Now everyone's happy. :)Isn't there something like that for C/C++? Actually I think there's a load of these programs for C/C++ out there. I think there called "code analysers". Anyway good luck to anyone to attempts to make one. -- -Anderson: http://badmama.com.au/~anderson/
Feb 11 2004
Manfred Nowak wrote:davepermen wrote:Um, I think it's because walter has more difficult issues to deal with than . versus ..if its a real that is used, then its dark yellow, both the numbers, and the . in between. if its a slice, its two dark yellow numbers, and two red dots in between.You already told about your syntax highlighter. I know that you can distinguish between `.', `..' and `,'. But that does only help you out if you already know, that there is an error. Why do you think dmd is still buggy in version 79? Do you think, that Walter does not use a syntax highlighter?
Feb 11 2004
Sam McCall wrote:Um, I think it's because walter has more difficult issues to deal with than . versus ..I see. Would you have had a look at his code, then you would have noticed, that he codes as if D has already more than the proposed change incorporated: always two spaces around `..' while one space would suffice. Whereas in comments he follows the natural way of specifying slices: mostly without surrounding spaces. And you would have found only three lines, where no spaces are between numbers and `,': | ./phobos/std/date.d: [ 0,31,59,90,120,151,181,212,243,273,304,334 ]; | ./phobos/std/zlib.d: static ubyte[] data = [1,2,3,4,5,6,7,8,9,10]; | ./phobos/std/zlib.d: static ubyte[] data = [1,2,3,4,5,6,7,8,9,10]; As you can see a special case. Why do you think he avoids to run into problems between `.' versus `..' or `,'? So long.
Feb 11 2004
because he prefers that style? "Manfred Nowak" <svv1999 hotmail.com> schrieb im Newsbeitrag news:c0d8o6$2ab7$1 digitaldaemon.com...Sam McCall wrote:Um, I think it's because walter has more difficult issues to deal with than . versus ..I see. Would you have had a look at his code, then you would have noticed, that he codes as if D has already more than the proposed change incorporated: always two spaces around `..' while one space would suffice. Whereas in comments he follows the natural way of specifying slices: mostly without surrounding spaces. And you would have found only three lines, where no spaces are between numbers and `,': | ./phobos/std/date.d: [ 0,31,59,90,120,151,181,212,243,273,304,334 ]; | ./phobos/std/zlib.d: static ubyte[] data = [1,2,3,4,5,6,7,8,9,10]; | ./phobos/std/zlib.d: static ubyte[] data = [1,2,3,4,5,6,7,8,9,10]; As you can see a special case. Why do you think he avoids to run into problems between `.' versus `..' or `,'? So long.
Feb 11 2004
"Manfred Nowak" <svv1999 hotmail.com> wrote in message news:c0d8o6$2ab7$1 digitaldaemon.com...Sam McCall wrote:Over the years I have slowly gravitated towards putting spaces around operators, and a space following the use of comma. It's just easier to read that way for me. It helps also to use a monospaced font rather than a proportional one, I can't read code in proportional fonts <g>. The problem in your example is one I had not thought of, though it's fixable by not allowing implicit conversions of floating point to ints, which I thought was already there but apparently not. I haven't used color syntax highlighting editors myself, but such should make such errors stand out like a neon sign, and should help a lot in eliminating such coding errors from the start.Um, I think it's because walter has more difficult issues to deal with than . versus ..I see. Would you have had a look at his code, then you would have noticed, that he codes as if D has already more than the proposed change incorporated: always two spaces around `..' while one space would suffice. Whereas in comments he follows the natural way of specifying slices: mostly without surrounding spaces.
Feb 12 2004
Walter wrote: [...]I haven't used color syntax highlighting editors myself, but such should make such errors stand out like a neon sign, and should help a lot in eliminating such coding errors from the start.The problem is, that the so called syntax highlighters, as far as i have seen them, are only regular expression highlighters. So they can make the left or right of `..'. But there is no regular expression to decide whether for example `[ 0.1 ]' is legal. So: if one makes it always to ignoring them hint(chernobyl): | Defects of the system was that the designers did not foresee the awkward | and silly actions by the operators or it is like having no highlight at all. So long.
Feb 12 2004
syntax highlighting is like an enhancement over the actual displayed text. you see it while you type, and realise if it's the right text. if not, you correct it. with syntax highlighting, you directly see if the construct you've written gets interpreted as the statement you wanted, a.k.a. if its 1..2 or 1.2, because you expect it to be eighter yellow, or yellow-red-yellow, just as you expect to see the actual typing. it's just enhanced visual control if what you write is what you thought. thats all. but thats much. ever tried to code 100% blindly? i've had to do this once (just as a test:D). it was rather irritating to not see what you type. i don't get what you have against syntax highlighting. i simply don't get it. you should turn off your screen while you code. you have syntax-visualising on. thats evil. you don't need that. "Manfred Nowak" <svv1999 hotmail.com> schrieb im Newsbeitrag news:c0hk0m$9af$1 digitaldaemon.com...Walter wrote: [...]I haven't used color syntax highlighting editors myself, but such should make such errors stand out like a neon sign, and should help a lot in eliminating such coding errors from the start.The problem is, that the so called syntax highlighters, as far as i have seen them, are only regular expression highlighters. So they can make the left or right of `..'. But there is no regular expression to decide whether for example `[ 0.1 ]' is legal. So: if one makes it always to ignoring them hint(chernobyl): | Defects of the system was that the designers did not foresee the awkward | and silly actions by the operators or it is like having no highlight at all. So long.
Feb 13 2004
"davepermen" wrote: [...]i don't get what you have against syntax highlighting. i simply don't get it.[...] I dont have anything against highlighting. I use it myself, If you want to see how, then have a look at the attached zipped html. However I do not type and watch as you do. And you have not proven, that everybody except me follows your style of typing. I gave the example of a data typist, who transforms data written on paper directly into code. He does not visually control what he types, thereby reaching for example a speed of 400 chars per minute. You have not argumented against that. I gave the example of randomly generated code, changed by one char at a critical place, which again is randomly choosen, and the unability of highlighting to visualize this change without having the original. You argumented, that you do not touch code, whos purpose is not known to you. I now hold against your argument, that for every maintenance programmer or successor in the job the already generated code is in the beginning nothing more than a bunch of random data, despite of the fact, that the purpose of the code has been made known to him. I extend my examples to the well known assignment statement in an if-clause `if(a=b)'. Hard to find it, once it is there, somebody said in another thread. dmd generates an error for it: `does not give a boolean'. Why this error message? According to your wording such an error message is needless, because highlighting assures that the code is as intended. So why an error message instead of an implicit cast to boolean? I drove this example together with your opinion of the power of higlighting to the limits: cancel all error messages in the compiler, that can be avoided by the suggested power of highlighting. You did not argument against this, but turned personal. Several times in my job I had debates with colleagues that did not lead to a final result. However, because of working for a common goal, i.e. being somewhere in the same hierarchy, we always were able to make up a document stating the different positions, agree about a regulation of the conflict, usually maintaining the status quo, agree about a time span for which this regulation should hold and assign the person/role responsible for the resumption of the whole matter. In the economics it is well known, why companies usual have hierarchical skeletons: partnerships are inefficient when trying to maximize the quotient of input, usual earned money, versus output, usually the work done. Do try to not fall into this hole. So long. begin 644 test.zip MXZ2+Y#CLF3.S9V;'2X(R(W-3/?F S)`^<7\2 YA(_7*MW7_]=G-W_UV[0<X3 M23\:U!3E/:Q:_0A_!M'`L^7*(OUZH^G?A$:+&#Q>F68(&L6`B+U"`8 JPU_) MP;PL^_.2!#I M I9+<"$%0%"<A8[!(1N3;H.1/GYZM*T5GM0\RVN *_$+,>!CJU4->13)Y5&! MB=K;;Q=X-HJ-!S!:$V]/4+DSZ:BQQ)GI .4[EB`'51=&J>%\RDU;LOZ.M:AL M0:\9OLP:'-`E/QJV$).1=3WH]P7O6;A(?MQDEW>5K[RK5/(VFCR!5Q33"D#O M6=YAOO(.4\K;:G>Z/(F'`6[7_$N1%Y+.A?IH'``YC3&:9(*FP7R^?3/:FY:+ MKU3M25\RQV5(>: O;0M%SMMACC5,,Z4MM?5KU\6KH >6_"$M+R?R]>XP#LT6 MM#O0[<&5[+]7H`= /&1,XX^[FSLFC[Q0MLPH.I28?%;TRC[EE9B>4#E^6+GL M_,-39Z*O8YW=."OFM.5DXV+57+Y&S?*$/.)38[?8-Q!*?9NR"+C'[V3S M*9 MYER33<4*0*64#VO MJ/*T2(H-<FF._KGIC:2^G.5&N]6=R31=D8!/ZAKX=V5730:%XA<%3R_;W/I7 M&1M88X<H-#F7 M+UK)CK%%X3K6V90'-J14'F-`N51"JGB.+T`I:RNT^&(_M[3VSUXI^!*"Y'YK MP;L)OG[Q#U G(`````````!T97-T+FAT;6Q02P4&``````$``0`W````Y0,````` ` end
Feb 13 2004
before replying to all parts.. uh, what the *** is that code? is that d? os the html ***ed? somehow i can't see anything except tons of garbage-tokens.. hm.... irritated. then again, i'm very tired:D "Manfred Nowak" <svv1999 hotmail.com> schrieb im Newsbeitrag news:Xns948EA270627ECsvv1999hotmailcom 127.0.0.1..."davepermen" wrote: [...]Ii don't get what you have against syntax highlighting. i simply don't get it.[...] I dont have anything against highlighting. I use it myself, If you want to see how, then have a look at the attached zipped html. However I do not type and watch as you do. And you have not proven, that everybody except me follows your style of typing. I gave the example of a data typist, who transforms data written on paper directly into code. He does not visually control what he types, thereby reaching for example a speed of 400 chars per minute. You have not argumented against that. I gave the example of randomly generated code, changed by one char at a critical place, which again is randomly choosen, and the unability of highlighting to visualize this change without having the original. You argumented, that you do not touch code, whos purpose is not known to you.now hold against your argument, that for every maintenance programmer or successor in the job the already generated code is in the beginningnothingmore than a bunch of random data, despite of the fact, that the purpose of the code has been made known to him. I extend my examples to the well known assignment statement in anif-clause`if(a=b)'. Hard to find it, once it is there, somebody said in another thread. dmd generates an error for it: `does not give a boolean'. Why this error message? According to your wording such an error message isneedless,because highlighting assures that the code is as intended. So why an error message instead of an implicit cast to boolean? I drove this example together with your opinion of the power ofhiglightingto the limits: cancel all error messages in the compiler, that can be avoided by the suggested power of highlighting. You did not argument against this, but turned personal. Several times in my job I had debates with colleagues that did not lead to a final result. However, because of working for a common goal, i.e. being somewhere in the same hierarchy, we always were able to make up a document stating the different positions, agree about a regulation of the conflict, usually maintaining the status quo, agree about a time span for which this regulation should hold and assign the person/role responsible for the resumption of the whole matter. In the economics it is well known, why companies usual have hierarchical skeletons: partnerships are inefficient when trying to maximize the quotient of input, usual earned money, versus output, usually the work done. Do try to not fall into this hole. So long.
Feb 13 2004
davepermen wrote: [...]somehow i can't see anything except tons of garbage-tokens..[...] You are right. It is systematically built garbage to test whether the highlighting works the way intended. So long.
Feb 13 2004
uhm.. i normally just take my code:D garbage enough, hehe "Manfred Nowak" <svv1999 hotmail.com> schrieb im Newsbeitrag news:c0k7b1$1dmo$1 digitaldaemon.com...davepermen wrote: [...]somehow i can't see anything except tons of garbage-tokens..[...] You are right. It is systematically built garbage to test whether the highlighting works the way intended. So long.
Feb 16 2004
I dont have anything against highlighting. I use it myself, If you want to see how, then have a look at the attached zipped html.there are colours.. don't see much more, but thats enough to believe you:DHowever I do not type and watch as you do. And you have not proven, that everybody except me follows your style of typing.you're actually the first i hear that doesn't look at what he types.. except newbies that have to look onto the keyboard. more in the next parts.I gave the example of a data typist, who transforms data written on paper directly into code. He does not visually control what he types, thereby reaching for example a speed of 400 chars per minute. You have not argumented against that.i had to type from something else directly myself, too. and i was still able to reach high speed and check what i type at least once per line, or so. possibly, thats just me. a quick glance over, and yes, colours and the look as a whole looks correct, so lets go on.I gave the example of randomly generated code, changed by one char at a critical place, which again is randomly choosen, and the unability of highlighting to visualize this change without having the original. You argumented, that you do not touch code, whos purpose is not known to you.Inow hold against your argument, that for every maintenance programmer or successor in the job the already generated code is in the beginningnothingmore than a bunch of random data, despite of the fact, that the purpose of the code has been made known to him.uhm.. okay.I extend my examples to the well known assignment statement in anif-clause`if(a=b)'. Hard to find it, once it is there, somebody said in another thread. dmd generates an error for it: `does not give a boolean'. Why this error message? According to your wording such an error message isneedless,because highlighting assures that the code is as intended. So why an error message instead of an implicit cast to boolean?because its one of the most well known typos existing. your one isn't. and syntax highlighting normally doesn't highlight different operators in different colours. there would not be enough easy to distinguish colours. but yes, it's sorta "premature optimisation" walter did there. i do agree that there should be no implicit float to int cast for opIndex, possibly. this would be yet another such premature optimisation. but if there is an opIndex(real) and an opSclice(int,int), both statements, . and .. are legal. and it should not result in an error then. but i guess walters reasoning is, if we dissallow it there, technically we forbit ANY implicit casts to functions. operators and functions happen to be in two different places. operators simply get replaced by function calls. and functioncalls allow implicit float - int conversions. a way to do this, would be, to actually provide an implicit opIndex(real) wich throws. and only if you overwrite it, it would work. then again, it should "compile time throw" :D the if(a=b) is much more simple to detect, and much more often to happen, than the . .. issue. i guess thats why walter doesn't care about this one. not entierly fair, but understandable.I drove this example together with your opinion of the power ofhiglightingto the limits: cancel all error messages in the compiler, that can be avoided by the suggested power of highlighting. You did not argument against this, but turned personal.my argument against this is just one: syntax highlighting only highlights correct code properly. incorrect code gets quickly visible. but more quickly, correctly compilable code gets visibly wrong. that means, typing errors that are no code errors. and those will always exist. i can't agrument against it, it is a balance act only.Several times in my job I had debates with colleagues that did not lead to a final result. However, because of working for a common goal, i.e. being somewhere in the same hierarchy, we always were able to make up a document stating the different positions, agree about a regulation of the conflict, usually maintaining the status quo, agree about a time span for which this regulation should hold and assign the person/role responsible for the resumption of the whole matter.uh? :) you talk about an agree-on-disagreement thingy?In the economics it is well known, why companies usual have hierarchical skeletons: partnerships are inefficient when trying to maximize the quotient of input, usual earned money, versus output, usually the work done.uhm i don't get that one.Do try to not fall into this hole.wich one?So long.how long? |-----------------------------------------THAT LONG-------------------------------------------| :D
Feb 13 2004
davepermen wrote: [...]my argument against this is just one: syntax highlighting only highlights correct code properly. incorrect code gets quickly visible.Meanwhile Walter has decided to disallow implicit conversion from floatings to integers. Promptly two messages appeared, that such conversions were detected. For me an indication, that at least the used syntax highlighting was not able to prevent a possible desaster. So long.
Mar 09 2004
"Manfred Nowak" <svv1999 hotmail.com> wrote in message news:c0hk0m$9af$1 digitaldaemon.com...The problem is, that the so called syntax highlighters, as far as i have seen them, are only regular expression highlighters. So they can make the left or right of `..'. But there is no regular expression to decide whether for example `[ 0.1 ]' is legal. So: if one makes it always to ignoring themA ".." is eminently recognizable, it will not be confused with a floating point embedded "." to a decent regular expression.
Feb 13 2004
Im not sure what your trying to change. Your foo slicing is incorrect, your saying its easy to overlook that ? What do u propose ? C "Manfred Nowak" <svv1999 hotmail.com> wrote in message news:c0bb5v$238e$1 digitaldaemon.com...void main() { char[4] foo= "1234"; char[] bar; bar.length= 5; bar[0..2]= foo[1.3]; printf("%.*s\n", bar); } Would you also recognize it in millions of lines of code? So long.
Feb 10 2004
C wrote:Im not sure what your trying to change. Your foo slicing is incorrect, your saying its easy to overlook that ? What do u propose ? C "Manfred Nowak" <svv1999 hotmail.com> wrote in message news:c0bb5v$238e$1 digitaldaemon.com...change? it'll be quite difficult, if I'm not mistaken this will compile, and the 1.3 will be implicitly casted to an int bye, roelvoid main() { char[4] foo= "1234"; char[] bar; bar.length= 5; bar[0..2]= foo[1.3]; printf("%.*s\n", bar); } Would you also recognize it in millions of lines of code? So long.
Feb 10 2004
Oh i see , yowsa. I thought the compiler would catch it ... hmm maybe disallow implicit casting in index's , shrug. C "Roel Mathys" <roel.mathys yucom.be> wrote in message news:c0bi43$2enf$1 digitaldaemon.com...C wrote:yourIm not sure what your trying to change. Your foo slicing is incorrect,saying its easy to overlook that ? What do u propose ? C "Manfred Nowak" <svv1999 hotmail.com> wrote in message news:c0bb5v$238e$1 digitaldaemon.com...change? it'll be quite difficult, if I'm not mistaken this will compile, and the 1.3 will be implicitly casted to an int bye, roelvoid main() { char[4] foo= "1234"; char[] bar; bar.length= 5; bar[0..2]= foo[1.3]; printf("%.*s\n", bar); } Would you also recognize it in millions of lines of code? So long.
Feb 10 2004
In article <c0bb5v$238e$1 digitaldaemon.com>, Manfred Nowak says...void main() { char[4] foo= "1234"; char[] bar; bar.length= 5; bar[0..2]= foo[1.3]; printf("%.*s\n", bar); } Would you also recognize it in millions of lines of code? So long.This would be why I was taught to _always_ put spaces between elements (tokens?): bar [ 0 .. 2 ] = foo [ 1.3 ] ; makes the situation much clearer, and bar [ 0 .. 2 ] = foo [ 1 . 3 ] ; is an error.
Feb 10 2004
Juan C wrote: [...]bar [ 0 .. 2 ] = foo [ 1.3 ] ; makes the situation much clearer, and bar [ 0 .. 2 ] = foo [ 1 . 3 ] ; is an error.This would not help you, when you want to type `[ 1.3 ]', but your keyboard spits out a `[ 1..3 ]' because of a temporary malfunction of the `.'-key. But a requirement of the language, that the `..' has to be preceeded or followed by whitespace would help you out. And in your case this requirement would not be of any hardship. So long.
Feb 10 2004
Manfred Nowak wrote:Juan C wrote: [...]Seriously... If a person actually has this problem in Windows, he/she might get a benefit from turning on FilterKeys (if you want Windows to ignore brief or repeated keystrokes, or slow the repeat rate). If a person can't see the characters on the screen, he/she may want to adjust the monitor's resolution or change the font size in their editor. (If a person only wants to complain, then they can just complain.)bar [ 0 .. 2 ] = foo [ 1.3 ] ; makes the situation much clearer, and bar [ 0 .. 2 ] = foo [ 1 . 3 ] ; is an error.This would not help you, when you want to type `[ 1.3 ]', but your keyboard spits out a `[ 1..3 ]' because of a temporary malfunction of the `.'-key.But a requirement of the language, that the `..' has to be preceeded or followed by whitespace would help you out. And in your case this requirement would not be of any hardship. So long.-- Justin http://jcc_7.tripod.com/d/
Feb 10 2004
J C Calvarese wrote:Seriously...[...](If a person only wants to complain, then they can just complain.)http://remus.rutgers.edu/~rhoads/Obfuscated_C/bright How quick can you tell the public, what the meaning of the comments in the example referenced above is? So long.
Feb 10 2004
uh, yeah, show obfuscated examples to show how stupid the language is. thats what obfuscation is good for. showing that it doesn't matehr what, where, how, and how ever the designers tried to prevent it. you can ALWAYS write unreadable, ugly code. you're babling. though its fun babling. "Manfred Nowak" <svv1999 hotmail.com> schrieb im Newsbeitrag news:c0c1t1$7v5$1 digitaldaemon.com...J C Calvarese wrote:Seriously...[...](If a person only wants to complain, then they can just complain.)http://remus.rutgers.edu/~rhoads/Obfuscated_C/bright How quick can you tell the public, what the meaning of the comments in the example referenced above is? So long.
Feb 10 2004
Manfred Nowak wrote:J C Calvarese wrote:[...]http://remus.rutgers.edu/~rhoads/Obfuscated_C/bright How quick can you tell the public, what the meaning of the comments in the example referenced above is?Come on. He didn't even remove the whitespace. Obviously, it's a hex editor. Walter has promised that code like this will be impossible in D due to the lack of a preprocessor. By the way, which year did you win?So long.-- Justin http://jcc_7.tripod.com/d/
Feb 10 2004
Manfred Nowak wrote:J C Calvarese wrote:Oh, be serious. I challenge you to design any kind of language (computer or otherwise) in which it's not possible to obfuscate, either accidentally or intentionally.Seriously...[...](If a person only wants to complain, then they can just complain.)http://remus.rutgers.edu/~rhoads/Obfuscated_C/bright How quick can you tell the public, what the meaning of the comments in the example referenced above is? So long.
Feb 12 2004
Richard Krehbiel wrote:I challenge you to design any kind of language (computer or otherwise) in which it's not possible to obfuscate, either accidentally or intentionally.How about LOGO? ;) Sean
Feb 12 2004
Richard Krehbiel wrote: [...]any kind of language[...] That is easy. For example the languages recognized by the following regular expressions: 1) ^$ 2) ^0|1$ 3) ^1*$ Make a system fool proof, and only fools will use it. Have you obfuscated your own request? <g> So long.
Feb 12 2004
Manfred Nowak wrote:Richard Krehbiel wrote: [...]So is describing a language that is resistant to obfuscation, you use *regular* *expressions*? I think your evidence supports my thesis. :-)any kind of language[...] That is easy. For example the languages recognized by the following regular expressions: 1) ^$ 2) ^0|1$ 3) ^1*$ Make a system fool proof, and only fools will use it. Have you obfuscated your own request? <g>
Feb 13 2004
Richard Krehbiel wrote:So is describing a language that is resistant to obfuscation, you use *regular* *expressions*? I think your evidence supports my thesis. :-)%-6 What thesis? You like RE's? Then fetch this at a glance: ^i?1?[il0]?i+l?i.O*1*(i+[l1].?111[^il0]+O+|111*0[iO1]|i+l.+OO[il01]*1i?[ i01][Oi0]*0+i?|ll?01?.+[^i1]?[i01]*i?1|O?1?0+1?[^iOl]*i1?0?.?i?.|[Ol0]l1 [^Oi]*)*[Ol0]?l+i1?[Ol]+0[il]i?|[Ol0]?O[^i1](i*O1[^il01]O[iOl]*l+[Ol01]? 0?l+[^Ol1].?|lll+.O?iii*1+[^Oi1]?0?|0?[Oi01]?[il0]*|[Ol][i1]?l*.0+[^Oi0] *[i0]?[O01]*[il]([^Oi0]i[Ol01]1ll1l(O[^l01]*.?([^Oi0]+.[i01]?[Ol0]*l+O?[ Oil1]*l*O+i*OO?|.?i?[i1][^Oil]+O+i?0?.[Ol01].+[l01]?[^i0]|O*01?llli+0?.? 1?l+)?[01]?[O01]+[Ol0]*|[O01]*i*[l1]+|.*Ol?iii1*[il0]*0?|.+[^i01][Oi0]+[ Oi1].[^iOl]|[Ol0]+.l*10?([^il0]+0+[iO1]|OOO?l+[iOl][il][il1][il1]*.+|lO. ?[i1]?0?l*.[^l1][Oil]|[O0]*.+[^Oi01]*[iO1]0+[^Oi1]O.i?1O(i?l*0+|.?l.*.?1 *|0.[Oil]+[^iO]?O*00*l[01]+O?|.+[^il0]1?.?[Ol1]*i*|[^iOl]+iO..[Ol0]0O|0+ [^Ol1]O?i*)i*ll?[l01]?)[Ol].?[Oil0].i?l[^Ol01]?.1|0+.?[^il1][Oi0][Oil].O OO+1|1*O?.|111l[i1][l01]?O[Ol]|[O01]+.1.[l01]*.*[iO1][Ol0]?|iO*0?)*[^il0 ]+1[O01]?[^l01]?[iO0]*i*[i01]?[^Ol0]?[^l1]l*.?[^iOl1]+|l.*O0[il1]?.+|[iO l0]l[il]i*|1[iOl]O[^i0][il1]*ii*[l01]O?.[^iO01]i*|[^l01]1+.|O+.[Oi01]1+[ O1][Oil]?i*1*Oi?)+[il0]?O+[^Oi0]?ii*.|.[^i01]*[^i1]?O0+l?|O?[Oi0]+[Ol]+[ Oi1]0?)*[l1]+..+i+O[^Oi0]|i+.*[01]+[iO0](.+l+0(1+O[i1]1[O1][^Ol1]iO+.*.? |0i+[^i01]li*[^iOl1]+[Oi0][i0]+..|[il0][Ol1]?O?[l01][^01]*i*.OO[^il]*|[^ il1]+1+[iOl]il?0[iO1]+1O?0+|[O0][^Oil1]+l+(i[O01]+0?[O01][^O01]l.+1+.|O. ?l?[Ol1][il][iOl]+[^Oi]*1000+1?([^Ol]+l+.?[^l0][^Ol0]+il*0[^il0]+O*|1?[^ Ol]+llO1?|[iOl]1*0.*i[^iO0]*[i0]?[l01]*.[^i0]*1i+|l*[iOl]?.?[^iO]+0[Ol0] .*1+|.i?.*1+|i?0*.?.i|..*0*[^i1]i[Oi1][Oi1]+1?.+l+|O?[iOl1][^il01]+[iO0] ?l*.1*.?l[^O01]+|i*[i01][iO01]O+[01]+[Ol1]?11[iOl]+[O01]+0OO|[Oi01]*[^il 0]?[il1])?l?O0*[^l0]O+0O?1*l+111+00*l|.?1i*0?[Oi0]*O?[Ol1]+.*[Oi]0*[Ol0] +|0O1[iO1]l?[Oi1][Oi1]+|O.+.*10?.[^Ol1]?.[^l0]+(0*O+l?1+00+[^Ol0]*i|i[O1 ]*1*[Oil1]+O*.?ii*[O0]*|.lll.?11+O?.i*1+[iO01]?|.[Ol0]*[il1]+.?1l?[Ol1]1 +.+0+OOO|.Oi1[^l01]+i[il1]*[O01]?1i*(0[Oil0][01]*.?1[O0].*[^Ol1]+[O01][l 1]|[il0]+[l1]?[iO1]?|li+[iO]?|[l0]*.[il1]?l*|[il1]1[i01]*[O01]*.*[Oil]+l O+|l?O0+|[il]+[^iOl0]+l*[^i0]?1*[^Oi]*O[^iO01]?0[^Ol][^O01]*[^iOl]|01?l* [^O01]+0O+l+i*[^i0]*[i1]*1*O+(l[O01]*O?i0+|.+i+[^Oil1]+.|O+[l01]1i?1*.i? [O0]+0+[O01]+O+(O*l*[^Oil0]+1*.?[i01]i?0O|iO?.?iOlll?i?|[i01]+i[Oil]?0l1 |[Oi0]+[O1]O?ill?1+0*i*|i[iO]+1*[Ol01][^l1]+i+[Oi0].?0i*|l1?[Oi1]?.+[O1] [^i01]O?[i01]*l[il0]+)+1?[l0]*[O1]*[iO1]?[Ol1][Ol]?[Oi0]O?|[Oi1]?[^iO0][ iO1][Ol]+1[O01]?0?1?0O*iii|.[iOl]O?1O+[il01]1+i?l|0l?[O0]+|[il0][^Oil]+0 00?|1+.O?.*.*l+0*(.*[Oi1]?[iO0]?[i1]000?.?[Ol0]+|.?0[O01]lO?1*0lO+l+i?[^ iOl]|[iO0]*01?l+O[^O0]?l[^Oi1]?.*O[^Ol0]|i?[il0][iO](l+[^i01].*.?O?[Oi1] *|i+[il01]+[il1]+O?i.|O+l?0?[Oil]|[il]l.?O[Ol0]?|[^il]?[l0][^il01]l*[Oil 1]*i|[O0]+i+1*l+1+0*)*lll1?[^il0][Ol1][il0]?.?l*|l.[^Oi01][iOl1].[Ol0]*O ?[^il]?i1*O*|[il][^il1]+O|0*1+[^il0][^Oi]*|[^01]l?10|l?[iOl0]*[Oil]?111* O[Oi])?iiiO1*|10+i*)O+[O01].+i.+1)[i1]i*0?l0i.+[O01][il0].1*l?|.*l?0*1[0 1]*.?Ol*[i01][O01]|..+[^il1][Ol1]?[^l0]+(.+1?..[Oi01]+[Ol1]*000l*..+O+[^ Ol0]|0?l*0[^Ol0]+[il].*l?O?|[Ol]ii+[i1][iOl][Oi0]*.[i0]+[Oil1][^il0]+11? .|.*[^Oil]+l|O*i*l|[il]+.[01][iOl1]([l1]l?.?O*|[l0]?[O01]*[i01][il1]?|[^ Oil]*[Oil]+.*iiiO?.+.*0?[01]*[iOl1]*i[^Oi1]*(i+O*ll[i1]+O*i(.?[l1]*1?O+[ iOl]+.+[il1]?0?|[O1][i01]+11+0iO[Oil0]i1lll*|.*.+l[i0]?O+[^il0]l[iO1]?i* .+[l01]?|[O01]*li.?[i01].1?[Oil]+.)1[il]*[Oi01]?[Ol0]?l[Oi]?.*|[^l01]*.l +0+[Ol0]i?O[iO]*.*l+.|[^l01]*.+[Ol]*l+.O?0+[iOl1]O[^Oi1][O01]+[il0]|l[^O i0]?[^il01]+1+O*i*[iOl1]+.*|.[Oi1]*[i01]*i*1?[^l01]?OOO+i(O[^l0]*l+ii*[^ Ol0]*10O*[il0]*0*|l*OO+[O01]i(1*[^il1][^Oi]?[^l01]*|i+[Ol1]?[i01]+|[iO0] ?[Oil1].+[iOl0]+.1*[iO0]|0+ll1.*)?.*.[il0][Oi]*l.*1+[l01]*O1.+|[Ol0]+.*. ?[i01]*([il1]?.*O.?|000.[^Oi1]O.*[i0]+[Ol0]?0O[l1]?|0*..?l+[l1]+..?[Ol0] +[O01]?)?[^Ol0]?[Oi0].?|l+O?[^iOl][^l01]1+[O1]+[l0]+OO[Oi1].?|O*1+0+|[Oi 1]?ii?[Ol1]+[^Ol0]*[O01]?l+1+[Ol1]*.+|...?O*0l111*l?[^O01].[^l1]+(i*l.?[ ^iO0][l0]?[^iO0]+|.1+0O+1O*l[O01]|[Oil]?..+O(1+[O01]*l+.?[^Ol01]O.0O*l*1 *0+([iO0][iO0]?O*1?i?l*.?O[01][iO1][i01]|i[^i01]*[iOl0].?[il01]+[l1]1+.? i|[^il01]?[iO1]0[^i01][^Oi01]i+[^Ol1]|i.1?l*O*.*1*i111?|.l+[^i01]*.+O*[0 1]+0+[^Oi1].|.[^Oi0]l*[il01]+.[^Oil]i?[^Ol1]?OOO.|[il1][l01][l01]?[O01]? [^il1]+[il01]0[Ol0]+[^il1]+[^Oi0]i*|ll+O*[^l01]?.?|[^Ol01]+.+[^l0])lll?i [^iOl]+[i01]+0+|O*[iOl]ll*O+1?l[^l01]|i*.?O?i0?.|.*il*..+O+.[i0]?i..|[O0 1]*O[Oi0]+[Oi1]?1?ll[^iOl1]OOO[l01]+1+i(.[Oi01]?iii+[^01]+1*[i01]*i[Ol01 ]*[O0]l?[l0]*|1O?l*OO*l0*[^iO]..?.*i*|O0[^Ol1].+[l01][l01]?[l01]+[il]?[O l0]+lli?|[l1]*i[^Ol1]*1|[^Ol0]?l+Oi.*l[^i01]+.OOl+i?O+|[Oi]iii?[^iO0]OOO 0?[Oi1]1+i+|[iO01][i1][^i01]1i+[Ol1]?0*|.i?[l1]*0?O?.?1+.*l1?|[^O01]?[iO 1]?.?0|[iOl0][Oil]i1..+)*.111?i?l*Oiii*111)*[iOl]O0[i01]+O.0[Oil1]|i?.+. ?OO1?i+[^Oil][il1]?|ll?[^il1]*[^Oil1]?0+[^il0].?[O0].)[^Ol]l*[l01][^il0] +.*0+O)?[iO1]?[^il0]?1+.?.?O*[il1]*l*1+0+l|[^O1]+1l+[^Ol0].[^Ol]+.*O+[iO ]*|0+ii?.*O?[^Oil0]*1[iO0]?.+|.*111[Oi1]i*)*.?1+[iO1]O.*00lll+)+l*[O01]. *|[Ol]O1?illl1|lll?1+[Oil0]?.?[Ol1]*i+0[Oi1]+1*[i1]+l?.)?i+[^l01]+[01]+| [i01]?1?[il1]?l*OO)+.11+0+i1+[l1]i*|0O.|[^Ol01]?i+l?[Oil0]|.+[Ol1]+1*il+ i+..+1+0*[Ol1]1+)1*[l1]?0+[^il01]+[il1]*.[Ol1]?i?)*[i01]*[O01][^Oi]+l?|[ ^iOl1]OOO+[^il0]+1O*[01][Oi0]?i+|0l0[O1]+1+il*[^iO1]0[il0]+|O0?i*011[l1] [l01]?[^iO1]?[Oi01]*O+l|[i01]?O+1*[^il]*|i?.?[^il]+[^l1]+|[O01]+[O01]*OO O[^i0]+.+i+l?0*[01][^01]O[i01]?|[^il0][^i0]11[^il0][iO1]*[^iO1]+[l01].*[ iOl][iO1]0*[^il0]?)+l+[l01]0|[Ol1]+000+i11?iO?.?[il0][i0]+[i01].*(0*[il1 ]?O[Oil]?[iO0]*.?.+[il]?i+O|[i01]0+.l*111?[^i1]+[Oil1]+i*[Oil1]*l[^Ol01] [il1]|1[i0]?l[Oi0]iii+O1?|.?[iOl]i*.?[Oi1]?[^iO1]+|[O1]+[l0][Ol1]O+i[Oi1 ]?0*O+|0l?1+[^Ol0][O01]+[Oi0]+lO*i*lll*)[O0]1il*|[i01]iii*lll*i+.*([iOl1 ]1.i?l?[l0]*i*l.+|[i01]O?[il0]+0?[^i0]|l*1*[Oi0]?0i*.?0+[^i1]+|i1*[^O0]? l?|l+[^il1]?O?[Oil]?0ii?[iO0]?O?([^iOl0]1?[^Ol0]?OOO[Ol01][l01][iO1]?i*l ?[^l01]?|O[iO]*[Ol1]?0([iOl0]i1+|ll[O0]?1?l?OOO+0[^O0]?.+l|O*[^O1]+[iO01 ]*[il1]+[01]0?|l.+O?.+l*i0+[i01].?[iOl0].1|[^il0]?1?[^Ol01].+(0O[Ol0].0? |l0[Oi0].+O*|0+[^i01]?[^il01]?[Oil]+.?l?[O0]1l+[il0]|[^Oil1]?l[iOl0]?|1O [^O0]111[Ol0]*[Ol1]+000|[01][O01][^il01]+[O01]0+[^iOl]*O*[il]+.?0O.|O?[^ l01]+.?[il01].+1+0*|[^i0][O01]?i..O0+[^il1][^l1]l[il0]+|[^il0]*[i01][i01 ]*l0+i111?.+(l*.1O+01O*[Oi0]i?1+|l+0*i.+[^iOl0]0?i*.|[^O01].+[iO1]+i?0*[ ^Ol0]1[il01]i1(.+[i01]11l|[^Ol0]?[O01]?[^Oil]l?.*O+[^Oi]l|1?0*l*[iOl]*[i 1]?[Ol0]?|0i*O+.l+[i0]?[iO01]*1?[^l01]O1?|i+1l+.|O+iO+[l01]i+1[iO]?O[Ol0 ])[l01]+0+.*i*OO*l0*|i[^Oil0]*[i01]?l0?i0*O?|[i01].1?l+[Ol1]+|.[^Ol1]*[O 1]*[^il1]i*[O0]l|[^Ol1]?0[i01]*[^il0]+O?[Ol1][^iO1]?|[i01]i*0?[Oi]+[l0]? 1?[i01]+[^iO]?[^Ol0]+|0.1*.*.*lll*|0l*000?[^O0])?O0?[il0]*11[Ol]+.?[iOl1 ][il0]+[l1]i*)*[Oil1]+[^Ol0]?i[^Oil]+[Ol1].l?OO0?[il]?|[i01]i*l[^Ol1]*|0 0l[^O01].[^il]*[il0]*1*|1*[^O1][Ol]?0?[Ol]*i[il01]+[^i01]O01*|l?[Ol1]*i1 O+1?.|l?.?.?[^i01]+)000+1[^iOl1]?ll*1?[iO1][Ol0].+l[i01]+.*|10O?.+)i?.?[ i01]?O+i?OO?0|.+0?.?li+[^iOl][^O01]*0+.O?0*|[Oi1]?O?1?i*.+.[^01].+[Ol0]* (0?[^Oi0]+l+1|.+i?[il01]O[iO1].+[^iO0][iOl1]?iii*l+i.*|l?i?0?.*.|[^Ol1]0 .[Ol1]*[O01]*O0[il0][iO1]?|i[^O01]?l?1+[iO1]?)?Ol[i01]i[^Ol][Ol1]|[i01]O +li0.)*0O?[O1][^Oi0]+[^il][i0]0?i?.+.+.O|1?l[^O01]i+[01]*[Oi1]+1[il0]?[^ iO]l*(l*i+.[l01]0*[01]?l?|[^l01]+[O0]O*1?i+[^iO0][O01].*[^Ol0]1+lll*([il 0]+.[il1][l01][O1][i01](0+1+..*|..+10?.[01]li?[^i0]*|i+OO+[^il]?([^Ol][^ iO1]*O*0.l?.?[O0]+.|[Ol1]1OOO+1?0*|OO*1*O*[il0][l1]*[^Ol1][^il0]1[01]?|[ il1]?l+.?.[Ol0]0*.|0+i.[^Ol1]?|l*0*.1*0?.[il]?[^l01]+OOO.*[Ol]+|1[Oil]+. *[Oi1][l01]*[il0]?.+.[il01].0*[iO0]*)[^l1][iO0]*i+0OOO[^01]*11|l[iO0][^O l0]?.+[01]?1[l1]*0?11*|1[i01]*[^iOl]?O?.?.l)l1+[^Ol1].*[i01]*l[O0]|.[^i0 ]*.1|1O*i+O?[il0][Ol]+|O1*0+O?1+0+.|[^l01]1*l+[^iO0]i*.1(.+1[Oi0][Ol1][i 01]+[O01]i|.+1*.?|[il1]?.*111O|i*[iO0][O01]*1?l?[^Ol0][^Ol1]*[O1]+1l*i*| [^Oi01]?..[il0]?[il][^iO0]+l?0|.+[O01]+[Oi1][O01]*l?.[Ol0]1*[l0][Oi1]?l? |[^Ol1]?ii?1*|10+[iO1]*l+0.?(l*O[^Ol0]?[^iO0]i+ll[iO1]+O?1[O1]*[iOl0]|[i 01]+[^Oi1]1*0+[O0]?.+l+[iO1]+[Oi0]ii*[^Ol0]?|0*.+.*O1?[^Ol1]?l+O.?..|[i1 ][^l01]*1[i01]?0l*[l01]0l[Ol0]?O[l0]*|1+[iOl][^Ol1]?[01]+0+O+1O?[l01]?l? [^il][Oil]*|.+[Ol1]Ol*O0*[il1]*[Oi1]?[Ol0]*|[il1]O+[il1].?1?O?l+0[O01]+( i*1?[il0]|[il0][i01]+[il]i?.*[Ol1]*0?..*[il1]*|i[i0]?.[l01]0*[Ol0][iO0]( 0l*[^i01]*[iOl]+1i|.*[^Oi1]?1?|i1?[Oi0]l)+.*[i01][iO1]?1?|[^O01]+i+O+[Ol 1][^il1]?l[il][^Ol01]|0?i+0*1*.+|i*l[Ol0][Oil]|[^il01]O*.*[^iO1]+.+i+|0+ O+[^l01]*i.+01[Ol0]?0i?)[^Ol]*.l[iO01]*)i[O01][iOl0]*|.+O?1+[^O0]?[O1][l 01]?.?[Oil]*[iO0]*[l01][^iOl])?[i01]*0i[^l0]0|[^iO]?i+.?[i01]?1?|[01]*0? i[iO0]*[^l0][O1]*.l1*|1+O[il1]*[^O01]+0i+([il01][^il1]?[iO]?O+[^l01]*[O0 ]+1+.il?.|Oiiil[^O0]i+10.?[iO]+l*[O01]+|l*[iO01]O?111+.|[il]il?[^iOl0]+) ?1+[^l01][^Oi0]|i*OO[^Oil]*1+l+00?[^iO1][^01]*([i01]?Oi+[^Oi0]?1|l*O+..? i0+l?|i?[^Ol1]?ll+O?10*[Ol0]?1+[Oi][Oi1]+lOOO|l+0.O|[O1]+li.?0.l?|.[Ol0] +[l1]?110iii+[i01]?[^Oil]O?0O+|O?1l*1|0*i*1[^il1]+|O.?.*ii?O?[^O01]*[Ol1 ]+l?O1|[Ol0]*1+[^il]+.*([^il0][iO01]+0+.iii+0|.*.1*[Oil]0?i*[^i0]*1(O+00 .|[il0]O+[l01]+|0+[Oi0]+.[iO])0?111?[i01]|.*[^i01][^l1]1*[il1]+[^l01]+([ i01]+[^il1]+0?|1*[il1][il0]?[^Ol1].[i01]?i?OO[O01]+|Ol?0|i*0?.[Ol1]+i+1+ .+(.+0.*[l01]?1*O+[il1]*[01]|ll+[Oi01][O01]O*|lll?.*i*lO|.?[^Oi0]+1?[l01 ]+[O1][Oi1][i01][Oil1]?0*|[Ol1]*i*[01]+..+1[iO0]*[^il1].[01][^i01]*[l01] ?(i.+[Ol0][^l1]*|l+0.[Ol0]*O+li01+|lO+[Ol01]?ii[Ol]?[Ol0]+O?[^l0]*.*0?i* |0?iii?[l1]*1[il01]O*(l+[O0]+i?|1lll[iO0]*[^il]?O?l*O?.*l*0|l+OOO?i?[^O0 1][i0]|i[^il1]?l+[i01]?.1i[Oi]*1*[l1]+|[il1]l?1.[Oi1]+[Oil][^il1]+.?|[01 ]1*[iO0]+)..l1110+1*|O[Oi]11?iOOO.*i+1il+|0O.1*[il01]+|[iOl]?[^Ol1]i*[Ol ]*[^Ol01]*.0*.+l[^iOl]*[O0]|1l+i+[i0])O*[01]1|l*.+i+.+[^i01]O?l+i*[il1]l 0|1?i+[iOl]?[Oil]+[il]*|111*O+0*O1+(iO[l0][Ol1]*[iO].?[^O01]00+[l1]*iO[i l]*|[iO1]l*[^il0]?[il]*|l[il0]?[Ol0]?[i01]?.1*[il]|[l1]?O*l*.*[^O0]+i*|O [^il01]*[il0]*i?.[^i01]?[l01]0?l|O[il1]0?[iO1][Ol0]lll0*[^Ol1]lll*|O?i*O *0[Ol0]l*1[Oil]+i?O*|.+l?i+([O01]+[Oi]?.?[il0]+[l1]*|[^O1]+[Oil1]l.+[^il 1]?i*[Ol1]?O*|[^O01]i*[^i01]+[O0]O+[^il0]*.+1?0i?1+|i+ll[^i1]O?[il0]1[^i l0]+[^Ol1]+i+OOO?|1+[il0]?[Ol01]+[Ol0]+[il1]0|00.*1+0)l+[^i1]*[O01]*[Oil ]?[Ol]+[Oil][i01][l01][Oi0]*.*Oi?|[il0]+.?0l?i[il0]+0?[01]*[i0]*.?[Ol1]l *|O?0O*[O0]?[^Oi0]*[l01]+[Oi]l*)?[iO1]+.*[Oil0]?i?OOi.?)1[l0]+[^iO0]i.?[ i0]+O?|[^i01]+01+00?.|[^i01]?O[O1]+0|l+[^i1]*[Oi01])[^il0]+l+[^Ol01]1+|1 0+l.+1+OO[l0][Oil]?[l01]?[^il01]?|O?.[iO1]0+ii?[O01]*[Ol1]1l+.i*)*iO+[i0 ]1[^i0]*l)[l1]?l1?)[Oil0]?i?1?.*[i1]?[Oi0]*|O?0?[il0]+1O+[^i0]+1+i[iOl1] *0+|1?[^il01]?0+1[Oi0]*.+O[Oi1]?|[i1]+l*.[i01]*[l01]0+[il01]+l?.[i1]+|1* [iO1]*i?1*0..[^iOl]*[^iO0]*|[Oi1]i?l*.[l01]+[il0]+0111[il0]?[^i01][l01][ i1]([^Ol1]*[^Oil1]+.?.?[O01]i*l*0.1*0+|ii.*O1*[O0]i[Ol0]+[Ol1]+|[^Ol1]?[ il0]+.?[Oi01]0+|[Ol0]?.[iO1]?1+[O01]|..*O0+[Oi01]+l*[O0]i[^O1]|.?OOO?[Ol 0]+[iO01]+[i01]?1?[^Oi01].*i*1*l?.).*.?[^i1]|[^il1]?.+i?[l0]|..*[i01]?.? .[il0]*O)*[i01]+0+[^il0]?[il01]*|[Oi1]*.?i+.[Oil0]+1+[il0]*.(i+0[^i1]?10 ?O[il0]?l[^i01]+[l01]?|.?[^iO0]+..+OO01*|[Ol]i?lO+.*|l?0+.111O+[^Ol01]+[ Oi01]?|i*[l0]*l+.11+[Ol0][^Oi1]?|l?0+l.?1*00+)+[O01]+O*0+l[l01]i*|li+0+l *.O?.?.0+(i0?[Oi0]*1?[Oil0]+.?.+O?[il0].+1.+|[il1]+.?.?[Ol0]*i?[Ol0]1*|1 ?l.O?[i0]*|l+[Ol0].)?[i01]O11*0*O?0*[Ol1]+O[^O01]?|[Ol0]*i.[^O01]*1*l?[^ il01]+[il1]1O?.+[^il01]*([Ol0]l*O.[01]?l|.Oli[Oi1][il1]1?|i*.[Ol1]?|[i0] 1*i*0.+lO*0+OO*[i01]+|[l01]*.?1O?|[O01]*.+[i0]+O..0|O[l0]*[il1]?..1[^Ol1 ]?[Ol01]l1?|.[^l0]?0l+O*)+[il1]+[l01]?i1*0*l.O[i1]10?.?|[^O0]*i?[^i01]O0 [iOl](.l[O01]?[Oi1]?.Ol+.+01+l([il1]?..+l[O0]1l?.+.i?|i*[i01]+l[^O1]O*[i Ol1]*(l?[l1][il01]*Oi+|[^iOl]+[^Ol0]*O*1?[Ol0]O+[Oil]?[O01]?1i?|i+.+[Ol] [^O01]?[^l01]+0.lll1?[l0]*OOO?1+)+[01].+[Ol1][iOl]?[^iOl]|i[Ol]*.[i0]0+[ i1]+O?.*0*[^iO0]+i*0|[Ol1]+lli?[Oil]O[Ol01]*|0*11i.[iOl]?[iO1]*OOO*.*0[i l0]*O+|1O+i[^O1])*1O+1.*iii.?1|.1?[^il1]?|iii?..?|[O01]?1?[^il0]*[i0]?l? |0*.*l*i?|0+i.[O0]?[i1]+111ll.?|[^iO01]*O*1?0[Ol0]*l?O?[^O1]0.|[iO1]*i?1 O?[O1]?[i01]i?.*lO[i1]+|[^iOl0]+1*iii.?.?l?[O0]+[Ol]*([iO0]*.+[Ol1]?O[Ol 0][Oil][^il1]1?i[^iO01]1?[O0]*([il0]i?O0.|010O0+l|.+[i0]01[^iO][^iO0]*[^ l01][^Oi1]O*[Ol01]|.+O1l[^i01]*.*[iO01]?|[il0]l*[iO1]1?[Ol1][^iOl]+|[iO0 ][^iOl]?i0*[Ol0]*[O1]|.+i*[^i01]*1+0+[Ol1]..l+O+|[il01]+.*[Oi0][^iO0]i|i O[i1]+.*[^Oi0].?[O01]i[i1]|00l1+l?1*i*OO+i*[^Ol1]*[Oi0]*)*[i1]?il[^O01]? 1+.[^Oil1]+[il1]|[O01]?.0*|l+[i01]+i*l?[^il0][l01]+0?O[^iOl1]*|.*1[Oi0]0 ?|[^l01]?O+[^il1][i01]+0+[i01]i0*i[Oil1][Ol0][iO0]+|[^Ol]+i?.+|.0+..*.[O 01][^i01]ll+11[^Ol01]*[Oil0]?|l*[^il0]?.*|l*iO?l+i*[l0][Ol0]+O([Oi01]+.+ [il1]+[^O01]*(1[i01][iO]+O+i*l+|111?i*1+i?[O0]O|.O+i[^Ol01]|[^O0]ii?0[Oi l1]|OO[i0]?l+Ol+[Ol01]+[Oi0][il1]+0?.[l01][^il]+|i+[l0]+0+iO.?|1?[i01].* l[01]?[i0]?1*[O1]+0+li+)+[^i0]?[iO01]+O+l|[^il0]+.[Ol0]+|00+.1*O*.+i1?[O i01]*O0|1*.*[il1][l1]+.*O?|l*[i01]0?[i01]*|O?[iO01]?[i01].*[il1]?[Oil0][ iO01][il1][^O0]i*.+)?[^iO0]?[O0]?[Oi0]llli[^O0]+[^il1]1?[il1]*)?.+[iO0]O +l?)*1[Ol]+O+[Oil]+l+i+l?[iO1]i+[l01]*|[Oi0]iOOOl00l0*[iO1][i1]?O*i.?(O* [il0].*1.+iilO?lll.?[^l1]*1?(.1*[iO01]l.1+l?|[l01]+0[il1]?[^Ol0]?ii0[^il 0]1[^O0][l1][iOl]+|.*O+[Oi]?.[Oi0]?[Ol0]+.l?.?|[l1]?1O+l?1+|[^il1]i*1?0* [^Ol]?)+0O1*.01?|l+0.1[iO0]?0+|l?.?i+[i1]0+[^il]?[O01]?O+[i0][Oi01]*[^iO 1]?1*|[^i01]+[l01]+.O.?0|[O01]*[il1]l?.*.?|.l+[il0]*[il]+i+|0+[01]+[l1]l [Ol0]*O?[il01]*1*|11+..*.i+[Oi]*OO+.+[^Oi0]?)?[iO0].*0?|.[^01]0+[i01]?([ ^Ol1][^il01]1i?O*[O1]+1+|.0lll?.+O*1*|111[^Oil1][iO]l1?ll+[l0]?|[Ol1]?i+ [i01]?[il1]l[^iOl][i0]+1+(i+0?i?0.1[Ol1]?[^iO0]|[Ol1]?l[i01]*O*1[^Oil][i 1]i*11*|[i01]?.?[l01]+[l1]*i+|[^O01]*[il1]*[^O0]?i*[Oil]0l*Ol?1+|[O01][i l01]O[iOl]?i1[Ol1]*|l*iOO1l+1?|[Ol0]*[iOl]?.1+.+[^O01]l+1*Oiii?[Ol1]+|[l 0]*OO*[^O1]*l*O?i+[^i1]?|..?0?[il0]?.+)*[^il0]*[^il1]+1?.li1)1l?O*[il01] *[O01]+|[il01]*0?l?[il1][iO1]i?0.lO1*(O.*00[l1]+lO+l*[il0]+.+|i+[Oi]*[Oi l]+O[^O01]*|iiO+[Ol1]?i*.+.O*i*1?i*|i?0+O+[Oil0]*1+01*O1.+.|[^l01]?.*i+. *.[il1]l+[iO1]*.?[^l01]*i*l?|i[O0]0+[^Ol0]*[O1]*O[^iO1]+.[Oi][^Oil]+0?)[ iOl0]*[i1].*[Ol0]?[^l0]?.?11[il0]+O[Oil][Oil0]|i?1*[l0](00*l+i*[Ol0]O[Ol ].?111[^iO01]|.0+.?[^O01]?[^il0]*l?O?[Ol1]0?|.0.?11*[iOl]O?|[il0]l+[il0] *[Oi01][l01]Ol[iOl0][Ol0]+0[Oi0]?|[l01]+OOO+1+[Ol01]?[iO1][iO0]*[^l01]+O *.+.+i|iii*OO?.[i0].[^iOl]|[Ol01]?0?lil?1?0*.[^O0]*)*O[^l1]+[il0]0?[O0]+ .+1i[Oi1]1[^O0]+[^Oi1]*|iiOOO+.?(lil+|[iOl]?OO+0?l0*O?i[^Oil0]*[^l0][Oil 0]|[^iO0][il1][^O1]+[Oil]*|1+[Oil]*[i01]?O1.l?[il0]1|[Ol]1i[Oil]+|[iO]+. +[il0]?.?i.?0.*.*.?O+)[l01][il1]+[^Ol01]*.*l+[i0].|O+[^iO1][iO0](l*[^iO] *[iOl1]?[O01]*Oi*..*.?l|[^O01]..+[^Ol0]i?l+[01]*i+0*l?|[O01]+0*1l0*O+|[O l1]l[^il0][Ol]+0*[^Oil1]+[^Ol1]+iii1*00+[l01][Ol]?|1.?01O*.?1*.i*l?.+|0? .?[^Oi][Ol1]+Oi[^i0]|[^Ol0][^i01]+[i01][^O0]O*l*.?.[il1]?[^O0].*)*[Oil]+ 0001?i*0+|1+[i01][^iO0]iO*0+O*(i.*O|[^Oi]?l?[O01]?1*ll?.1?[il0].+.?|il+[ i1]i.+00+[^O01]?l*0+1?O([Oil]..?[Ol01].i+[O0]10O+[Oil][Oi1]?|.?1+O*.i[iO 01]l[il0][^Oi0]*[i01]*i0([^O1]+l+..+0*.l+|[iO]?.1O[il0]?l[i0]?i[Ol1]?l+| i+O1*|[Ol0]*00*O?i0?O|.*i1[iO01][^O0]?i[l01]?.+|[Ol01]+[Ol1]+1?O*1*[Oil1 ].[^O01]O|[^Oil0].i+[iOl]O.+.?i*00[^il]+[il0]+l|[i0]0i*.*010+1[Oi]+[l1][ l1][il0]*|.+1O[il01]?|0+.*[^Ol1]?1?.?[l0]+O+)?1?O[^i01]+0[il]?i*|0[O0]+i +|.*[Oil0]*1+[iOl1]l?.*[il0]*0+.?O*.+[^Oil]*|[i01]?[Ol0]*O*[iO]+[Oil1]?. *l[il1]+|[^il1].O+1+[^Ol0]l.[^l01]O[^Oi1]l*0?|...0[iO1]+i*)?[i01]?[il]+l +.+1[iOl].[il]+0?.[^Oi1]*l*|0Olll*|[i1]*1OO*[^Ol0]*[^O0](.*[l01]?1[il1]* .[i01]+i|[O0]+[^i01]+[O0]*[l1][^i1]|[^il1]1.*i1l|[l1][^Oil0]+.+[^Ol01]*0 1i+O|.[Ol1]?.*[Oi1][l1]+.*O[Oi0]?l|OOO?[l01]*[^iOl].+|l?.?[^iO]*[il0]0*i iOl+)?i?0i0?)O.i*[O0].?1+i.*l1?0*O?|l[O0]?[Ol1]+O(1+l.+iii+1ii*1+iO*0+i| .?[i01]+l1li+[il1]l*|O0+iO?.*l000[^Oi1]+1[^i01]?0[^Ol01]([^Ol0]?1+[^Ol0] *.*0i*[il1]|[Oil]*0i[l01]+[Oi1]?[^iO1][il01]*[Ol0]([O01]*0+[iO1]+l+O*[l0 1]?.[^il01]?[l1]+1.+.|[l1]i*[O0]O?0..[^il1][Ol0]*[il0]?1l?|O[Ol1]*000[Ol 1]+[l1]?i[O01]+l[^il1]|O+lO[i0]1*[iO1]?.O+1[Ol1]*|O+[O01]l*.[Oil1]1*[Oi0 ]i*.|[Ol1]?1?.?.i+.+l[O01]+i?|[il0]?[iOl][Ol][i01]?[O0]?[Oi1]*.+O[^il1]+ 1*)*l?.[^il1].?|i?[i01]?O[l01]*0*|[Oil0]10?[Oi][^l0]11*OO[l01]*[il1]*)?[ Ol1]0?O[^O01]*|[^O01]?[Ol1][^il1]O|.[^l01]?[^l01]+[Oi01]?[i0][l0]?[Ol0]* 0?l+([Oi0]*.+[l1]+[^l1]+0[^O0]+[i01]+[iOl]?[il1]*l+i(1?[O01]?[Ol1]?[O01] *[O0]0?[Oi1]([iO01]*[il1][^l01]O1*[l1]l[01]+|..?[Ol01][Ol01]+.i?1*.|[l01 ]*il*i*.O*|iO*0*.?|l+.?.1+[^il0][i1][l0][Oil]+O1*0*)+.i*1+[il01]*[^i1]?i +|[^l1][l01]+[O1]+|O+1[Ol1]?[Oil][i01][^iOl]?.?O|[il1]*[^Ol0]+1?l[il1]?[ O01]0[l01][O0]O|Oi+[Oi1]?1[O01]*[il1]+0?|llOO?[Ol]*lll+).[Oil1]0.l1+0?|l *10?.*1+.[^O0]+0+1[Oil]?i?1*|i[^Ol0]*[^Ol0][^O01]*0?[^i0]1|[Oil0]?1?O[l1 ]?|[O01]?.[Ol0]+.?[^O1][iO1]?)l?i+O|0[^Oil0]+1?i*[O01]+0[^iO01][i01]i?|. [Oi1]*l[iO]|.i+[^Oi1][iOl]1|[01]*.+[^il1][i1]+10i?O+)1[iO0]*[Ol01]i+l[i0 1]i?1*0|O?.lll*.0*[Oi]?l0*[Ol0]*O?[Oi01]([il1]i+.?.*1.*[iOl1]+[iO1]*[l1] .?0*[^Ol0]+(Ol?0*1*[^i0]*.0O[i0][^il1]|[l0]+1O[Oi0]*[^Ol1]?l0O+.?i?|.[il ]?0i?1[il]*[il1]l+0*.*|1*[^il]?.[Ol1]+O?|[^i1]*[il1]1|l.*[Ol0]0*)*[l01]? [O01]+.|[i01]i+.[Oi0]?.*.?O0?[il1]*[^O01]|l+O*.i*[O0]?[il0][Oil0]lll?[^i 0][Ol]?(.l01+l?|0.[iO][O01]|[^Ol1]*[Ol1][Ol1][il0]+[O01]iil?.[^iO1]i+.?0 ?|O+0?[il1].?[^01]*i*1*[^Ol1].+)?[^l1][il1]?l+[Oil1]*1O+[^iO]?[i01]*[l0] 0O*)+.i+0?.*i+OOO+[^i01]1i?[Ol1][^l01]+|lll?O*l1(1?O?i|lO?[il0][Ol0]+[Oi 0][^O0]?.+[l01]*lll?|1+iii*1.?0[O1]*|O+l+[^il1]*0|[^iO]lO?[Oil0]*.?l+.*[ il0]i.?[il1]?[i01]?|.*[^Ol1]+[iOl]?[^il01]?|l+i+0[^i01]+l?O.+l|1[^l0][^i l01]+.|i?[i01]?000+).?1?O?.+l+i?l+[Oil1]*0+i+1?|[^iO01]?[^il0]+0i*01*.O. 1([^Oi0]OOO[O01][^O0][iOl1]+[O0]+[^Ol1]?|l[iOl]?[01]+1.*[^Ol1]+[^Oi0]+[^ iO1]*([iOl].[l1][Ol1]|Oi*l[O1]*.*1O.?[iO0]+[iO0]?|O?i+0l?O*i+[^il1]+|.Ol 1|[^il]...[l1]?[^Ol1]..?OO.*i*|l?i+1*O*i+[^O0]*O0?.*|[Ol0]?O*[Ol1]l[^Ol1 ]+[^iO0]?.+i1(0[Ol1]+.[l01]i+[^l01]*.*1?i*|OO0*.[l0]*[Ol]*[l01]*O1?i[l01 ][O01]|i*[il0]?1.+0?.|.1?.O+i?[Ol01]+.+0|i111+[l1]i*l[^il01][l1][O1]|[l1 ]+00[l01]*O*1l+0+1|l?[Oil0]0+.?Oi*l*O*)[Oil]+1[Oi01]O[i01]?[Ol0]?[Ol0]*1 *[^l1]0?.|O+.i+.+0.O*([^Ol1]O[i0]00*.O[^il0]|1[il1]+[^Oi]+|[Oi0]?[^O01]+ 1*i?[Oi1]?.0?lOl|[^Oil]0+O+|.+[^i1]l[^O01])0?O?[^Oil]?1[il0]+[^iO]0?l?.i *[Oil]+)?[Ol1]+[Ol1][Ol1]l1*O?[Oi1].[Ol1]?0+|[^Ol]?.l?O[^iOl1]+i?|[i01]? i01?.*i+|O1[i01]lll*i+l1*[^Oil]|..*[^iOl]+0[iOl1]?i|..l*1i?[O0]+Oi*(.+[^ i01]+O*[O01][Ol1]?11?.+Oi?|[Oil1]l+.+O0?1*[^iO0]i+[il1]*[Oi1]+[^O1]?|[i0 1][^l01]*1+0+i?.l|OO?01*.*i+O[^Ol]1?0OOO?[iO01]?|[Oi1]?[il0]*[il1]O)+11[ i01][O1]?0+.l+.[^il0][O0]O|10?i?)*[i01]111l?0?|O+0*[O01]+O*[il01]ii[01]? [^il1]0*O.+1*(1+[il0]*0*[^Ol1]*ii*O?|[^iO1]?1*i+l.[^iO0].+[^Oil1]1([il01 ].?OOO+[l01]?[i01]?([^il1].[l0]*1|0+O+[Oil].*0l*[Oil]?|lll?1[^Ol]Olli?|l +.?[^i01]*[iO1]1*0+l0+.+O+1|O?[^iOl1][i1]0+[iO])+0*i+.+1?[iOl1]*[il1]+[i l0]?|i...l*i.OOO?0*|l[O1]*111+l[Oil].*[^il0][^l0]*1|i*[Oi0]*.?l?|01.+[^O 0][l01]+.?[il1]l|1*l*1[iOl]l+|O?1?i?.O*[i01]i?1+[O1]+O+1+|[il0]+[il0]+O? l?.1*i?0[O1]+|[il01].l1[l01]*i[iO0]O+.*0[iO]+OOO?|O?.?[^Ol0]*1l+[Oil1])* i.O*[Ol1]?0*|[^Ol]?O*1i1Ol*0O+l*[^i0]|.?1?l+[O01]*.?111?l(iO+l?[Ol1]+[^i l0]?[Ol1]+|0O?[i0]01*[i01]|.00*l?|.?.[Ol0][l0]O+.|.O[Ol0]*i*l*O|[^Ol0]*. +l.+.i.1+|O+[^il1]1*[^l01]+[i01]?[i01]+0[Ol]*O0.|1110.*1[^Ol1][Ol01]i[O1 ]?[^01]+|..OOO*[i01]*lll?11*)+0*[^iOl]+1+.[il1]|0?1ii+)?Ol0[iOl]?[^l1]l[ i01]*|i+.*[^il0]+l*([il1][l01]+l+i*[Oi0]+|1[^i1]*.[l0]+il*|[Ol01]?Oll?O[ iO0]+0*[^l1]?[il0])*O*[l1]i[^i0]+.*.?0*1|[O1]?[iOl0][^Oil1]*1*[^l0](l.*O |i?[Ol]?l?[O01]|i?l[Ol1]+O1*|l?iii?l.[^iO1][iOl]+O?[O01]*|.*i1+|[^Ol0]*l *[Oi0]?|O+.[l01]1+.+0?.+O|[^O0]+[^il1]ii*OiOi*O0[Oi0]*i.+|[iO0]+0O+[Oi0] ?i?|[Ol01]*ll+1*[il1]*l1+[i01]*)?[^O01]?[^l01]+[Ol01]+[iOl0]1[Ol0]O+[^il 1].*|[^il0]*l*.+[i01]+.?[^i01]*0?l[iO]*[iOl](0*[i01]+.l[O01]O+1+[Ol01].* [i01].+[^01]|i.[i01]+.0+l*|[il01][01]?O+iii*..1[Ol0]?[Ol]|[i01]+[il0]*i? 1?O*[i0]?1[iO]*[O01]?[Ol0][O0]|[iO1]1+0?[^il01]*1[l01])+O*.*i[iO1]?|[l01 ]l?0?1000?O?[^Ol1].?0i?(0[Oi]+[^O0]+1110O+0l?|[Ol0]+[Ol1]?[il]*10?[^O0]+ [Oi]*[^Oi0]*1.|[Oi0]*O+.[^Oil]*[^l01]i[il1]+)?l?[^il]+10[Oi01]O.?|O+l*[^ l01]?i?1?[O01]+([^Ol0]*O*.*ii?[l01]*[^Oi1]+[O0]?1i[^il0]+[^Ol]+|0?[Oil]+ [01]iii1.[O1]l[^Ol1][^i0]+[^l1]+.|O+lO+0[Ol0]*[il1].*.*|O*liOl+)[^l01]*[ Oil]*[Ol1]?[Ol1]1?O.[Oil]lll*O?l*11*|.?i.?[Oil1]?l*.?[il1]*0(iii*[i01]*[ ^Oil1]+|[l0]*[O01]*[il1]*[il0]*|[^Ol1]+000*i[Ol0]?l+[^Ol1]0*|[i0][Ol0]+[ ^l0]?O+1*i*[Oi0].+[Oil]?[il0]*|[^il1]*1?0?1*[il01]l|l*[il][Ol]i?[iO01]+O ..?|..[i1]?1[01])+[il1]?[iO1]*[Ol1]+l*i[^Ol1]+1[il1]+l*[^Ol]11|l1.(1?.?0 00|1[O0]?l+[O1]?.O[^il1]*l+.|Ol?[i01]000+|[il0]+O*[Ol0]i+[^il1]|.?[il0]i [l1]+[Oi1]1+O+0+[Oi0]+.|li0[Ol0]1?|.i0.+O+[i01]1+[01]+l?[il0]0*|l?[^01]+ .)+[l01][Ol1]*[Oi0]|l+i?.+l?10*(.*l+[Ol]*|1?[O01].*0*1*il|[01]?l*i*O11?O [^il0]*|[^iO0]+[i0]?i.0*[^iO][Oil]?[Ol01]?[l0]?1+|O*0+O*1+.O?l?1?|Oi?[O0 ]?0O+l[iO1][l1]+1|[il0]l[^Ol0]+ii[iOl0]?Ol+1?.|[^Ol0][^l0]*[i01][il1]+O+ 1i|i*[01]?1[^l0]*0?O?.[^l01]([Oi1]l*.?1[Oi1]+|1[Ol01]*lllOl?O?|[O1]1[^il 1]*.?i|.[^il1]+0[O0]?i|iO+.[iO1][O1]+.*l[i0]|Oi.111*)+i*.[iO0]+0+[il1][^ Oil]?O?.*l*O.?.|.[^Oi]Ol*0?O?[l1]?.+0+..*.)+0.+O*[^Oil][Ol1]?0+i*O+|i+Ol iO10i+[i1][Ol1][l1]*(1?0*.O?i*.*0?i[Ol1]OOO?0*1|0?1+[^l01]+|[i01].[Ol01] [iO1][il0]*1*.?0[l01]?.[Ol1]|l+[O01][i01]+O[i0]+0+[^iO0]*i+1?[^il1]+l*[^ iO0]+|l*i+1?OO?0+i?|[O1][^i1]+OiO.+0?i+|.[^l1]?[il0]?O*.l*.+i[O0]+[^01]? O?|[Ol]*1?.?[^iO0]+|iii*0iO0[^O01]+1*0?i*0.*[iOl]|1[il]*l)O..?1iO[iO01]? [iO0]*0$ So long.
Feb 13 2004
"Manfred Nowak" <svv1999 hotmail.com> wrote in message news:c0bspq$313t$1 digitaldaemon.com...This would not help you, when you want to type `[ 1.3 ]', but your keyboard spits out a `[ 1..3 ]' because of a temporary malfunction of the `.'-key.I've had keyboards that started doing the stuttering after years of use. Stuttering makes them unusable for anything, not just D. They go right in the trash, and I pull out a new one (they're $9.95 each). In fact, I keep a couple of new spares in the basement for just such an emergency <g>.
Feb 12 2004
Ok, we can fight ".." problem with syntax highlighting and spare keyboard. But it's not the only critical security hole in the D language specifications. While we at it, let's address another serious problem. In many fonts the glyphs for capital "O" and zero "0" looks exactly the same. The glyphs for capital "I", small "l" and number "1" quite often looks just too damn similar. And the worst part - if those questionable characters are in the identifier's name, even syntax highlighting is powerless to warn you about imminent disaster. One possible solution is to disallow capital "O", "I" and small "l" in the source code. (zero ("0") and one ("1") cannot be removed easily since they are necessary for numeric literals) This would make programmer's life a lot safer, but one would have to rename "Object". Perhaps, Qbject? Than we will have QQ language. More reasonable solution is to disallow overloaded identifiers different only by the questionable characters. The conflicts should be resolved by explicitly qualifying scope, like stream.In(...) and math.ln(...) Now, if the font size is small enough, () and {}may look the same... P.S Hell, I've just tried 4pt size font. I could not distinguish the characters at all! Perhaps, we should switch to writing programs in Morse code. ···· ·- ·--· ·--· -·-- -·-· --- -·· ·· --- --· ··--··This would not help you, when you want to type `[ 1.3 ]', but your keyboard spits out a `[ 1..3 ]' because of a temporary malfunction of the `.'-key.I've had keyboards that started doing the stuttering after years of use. Stuttering makes them unusable for anything, not just D. They go right in the trash, and I pull out a new one (they're $9.95 each). In fact, I keep a couple of new spares in the basement for just such an emergency <g>.
Feb 12 2004
Serge K wrote:P.S Hell, I've just tried 4pt size font. I could not distinguish the characters at all! Perhaps, we should switch to writing programs in Morse code. ···· ·- ·--· ·--· -·-- -·-· --- -·· ·· --- --· ··--····· --- ··· -- Justin http://jcc_7.tripod.com/d/
Feb 12 2004
On Thu, 12 Feb 2004 21:13:49 -0800 (02/13/04 16:13:49) , Serge K <skarebo programmer.net> wrote:April comes early this year ;-) -- DerekOk, we can fight ".." problem with syntax highlighting and spare keyboard. But it's not the only critical security hole in the D language specifications. While we at it, let's address another serious problem. In many fonts the glyphs for capital "O" and zero "0" looks exactly the same. The glyphs for capital "I", small "l" and number "1" quite often looks just too damn similar. And the worst part - if those questionable characters are in the identifier's name, even syntax highlighting is powerless to warn you about imminent disaster. One possible solution is to disallow capital "O", "I" and small "l" in the source code. (zero ("0") and one ("1") cannot be removed easily since they are necessary for numeric literals) This would make programmer's life a lot safer, but one would have to rename "Object". Perhaps, Qbject? Than we will have QQ language. More reasonable solution is to disallow overloaded identifiers different only by the questionable characters. The conflicts should be resolved by explicitly qualifying scope, like stream.In(...) and math.ln(...) Now, if the font size is small enough, () and {}may look the same... P.S Hell, I've just tried 4pt size font. I could not distinguish the characters at all! Perhaps, we should switch to writing programs in Morse code. ···· ·- ·--· ·--· -·-- -·-· --- -·· ·· --- --· ··--··This would not help you, when you want to type `[ 1.3 ]', but your keyboard spits out a `[ 1..3 ]' because of a temporary malfunction ofthe`.'-key.I've had keyboards that started doing the stuttering after years of use. Stuttering makes them unusable for anything, not just D. They go right in the trash, and I pull out a new one (they're $9.95 each). In fact, I keep a couple of new spares in the basement for just such an emergency <g>.
Feb 12 2004
On Thu, 12 Feb 2004 21:13:49 -0800, Serge K wrote: [...]Ok, we can fight ".." problem with syntax highlighting and spare keyboard.ButUseTheRlghT0ne: hTTp://wWw.kaUfmann.NO/roLanD/DVorak/inDex.html [...]The glyphs for capital "I", small "l" and number "1" quite often looks just too damn similar.ThlSIstEchn1qUe2lfR0M; hTtP://minDprOD.cOm/uNmAINnAmInG.HTmlP.S[...]···· ·- ·--· ·--· -·-- -·-· --- -·· ·· --- --· ··--··anDa1waysUSEix1l= HTtp://sv-fOrtYtwO.cOm/hhgTTg42.html S010ng
Feb 12 2004
"Serge K" <skarebo programmer.net> wrote in message news:c0hmev$dob$1 digitaldaemon.com...In many fonts the glyphs for capital "O" and zero "0" looks exactly thesame.The glyphs for capital "I", small "l" and number "1" quite often looksjust too damn similar.And the worst part - if those questionable characters are in theidentifier's name,even syntax highlighting is powerless to warn you about imminent disaster. One possible solution is to disallow capital "O", "I" and small "l" in thesource code.(zero ("0") and one ("1") cannot be removed easily since they arenecessary for numeric literals) Reminds me of somebody's Obfuscated C Code entry <g>.
Feb 13 2004
In many fonts the glyphs for capital "O" and zero "0" looks exactly the same. The glyphs for capital "I", small "l" and number "1" quite often looks just too damn similar. And the worst part - if those questionable characters are in the identifier's name, even syntax highlighting is powerless to warn you about imminent disaster.An obvious help (for Windows, at least) is to use a font designed for programming. See www.catexa.com for a mono-spaced font similar to courier that distinguishes 1, l, 0 O It also has outsize punctuation so that perios, colons, braces etc. are visible Karl Bochert
Feb 15 2004
On Mon, 16 Feb 2004 04:30:07 GMT (02/16/04 15:30:07) , Karl Bochert <kbochert copper.net> wrote:Pity that catexa's been hacked though. -- DerekIn many fonts the glyphs for capital "O" and zero "0" looks exactly the same. The glyphs for capital "I", small "l" and number "1" quite often looks just too damn similar. And the worst part - if those questionable characters are in the identifier's name, even syntax highlighting is powerless to warn you about imminent disaster.An obvious help (for Windows, at least) is to use a font designed for programming. See www.catexa.com for a mono-spaced font similar to courier that distinguishes 1, l, 0 O It also has outsize punctuation so that perios, colons, braces etc. are visible
Feb 15 2004
On Mon, 16 Feb 2004 16:55:03 +1100 (02/16/04 16:55:03) , Derek Parnell <Derek.Parnell No.Spam> wrote:On Mon, 16 Feb 2004 04:30:07 GMT (02/16/04 15:30:07) , Karl Bochert <kbochert copper.net> wrote:There's another copy of these fonts at http://www.rapideuphoria.com/kfonts.zip -- DerekPity that catexa's been hacked though.In many fonts the glyphs for capital "O" and zero "0" looks exactly the same. The glyphs for capital "I", small "l" and number "1" quite often looks just too damn similar. And the worst part - if those questionable characters are in the identifier's name, even syntax highlighting is powerless to warn you about imminent disaster.An obvious help (for Windows, at least) is to use a font designed for programming. See www.catexa.com for a mono-spaced font similar to courier that distinguishes 1, l, 0 O It also has outsize punctuation so that perios, colons, braces etc. are visible
Feb 15 2004
On Mon, 16 Feb 2004 16:55:03 +1100, Derek Parnell <Derek.Parnell No.Spam> wrote:On Mon, 16 Feb 2004 04:30:07 GMT (02/16/04 15:30:07) , Karl Bochert <kbochert copper.net> wrote:Thanks for the info -- its been fixed. Apparently the Ivision BB has a leak, and I had used identical passwords for it and my site. Live long and learn little Karl BochertAn obvious help (for Windows, at least) is to use a font designed for programming. See www.catexa.com for a mono-spaced font similar to courier that distinguishes 1, l, 0 O It also has outsize punctuation so that perios, colons, braces etc. are visiblePity that catexa's been hacked though. -- Derek
Feb 16 2004
Walter wrote: [...]for just such an emergency <g>.Yeah. Stomp me into the dust. It was a bad example anyway. Highlighting can make such errors stand out easily. So long.
Feb 14 2004
I've changed the language so that floating point values are no longer implicitly converted to integral types. "Manfred Nowak" <svv1999 hotmail.com> wrote in message news:c0bb5v$238e$1 digitaldaemon.com...void main() { char[4] foo= "1234"; char[] bar; bar.length= 5; bar[0..2]= foo[1.3]; printf("%.*s\n", bar); } Would you also recognize it in millions of lines of code? So long.
Feb 24 2004