Pascal中的Begin end := 比起其它语言显得罗唆,不够简洁,可否直接修改一下?
比如begin end 替换为{ }, 
{ } 注释替换为 /* */
:= 替换为 =
= 替换为 ==
等等思路一:
直接修改关键字库,把begin end等关键字替换为{ }
这是根本解决,但不知是否可行,怎么改。思路二:
只改代码显示。加一个外挂,在显示和编译之间进行字符串替换
显示{ } 编译时替换回begin end,可能还得修改代码显示方案。例如:function isEqual(a,b:integer):boolean;
{some comment}
begin
    if a = b then 
    begin
        ...
        result := true;
    end
    else
    begin
        ...
        result := false;
    end;
end;修改后
function isEqual(a,b:integer):boolean;
/* some comment */
{
    if a == b then 
    {
        ...
        result = true;
    }else{
        ...
        result = false;
    }
};简洁了一些,结构也清晰了一些当然有人会说没必要,但如果有这样一种选择,也是不错的。语法分析和替换我可以做,但怎么嵌入Delphi我就不知道了,有没有感兴趣的?

解决方案 »

  1.   

    pascal不区分字符的大小写,而C类语言区分大小写,你是否能习惯呢!
      

  2.   

    提供“自定义预编译器”的IDEpascal的with语句很好用,但是对于需要对多个对象进行缩写时,就不够用了
    如果能扩展为:
    WITH obj1.fobj11 AS o1,obj2.fobj21 AS o2 DO
    BEGIN
      o1.xxx;
      x:=o2.yyy+o1.yyy;
    END;
    就好了!好像c#已经是这样的了。。 
     由这类问题引发的一个需求、幻想是:一个待编译的项目源代码包,第一个文件就是自定义的语法预处理定义
    真正编译源代码前,先通过这个预处理文件对所有源代码进行预处理,然后才是编译
    这样,就可以很简单的实现了各种语言的个人改进
    当然,多数个人改进不一定是对的方向,但是通过互相的交流,集思广益,总会很快归纳出一些优秀预处理
    这样,比什么组织、公司推出新语法要快的多,而且负面影响也小——不好的,很快通过实践被淘汰  不过副作用是:每个人的代码个性化会更厉害!——必须有一种自动wiki机制尽快消灭不良的“预编译器”才行
    http://blog.csdn.net/sz_haitao/archive/2008/09/28/2991250.aspxhttp://blog.csdn.net/sz_haitao/archive/2009/02/20/3914763.aspx
      

  3.   

    呵呵,是没有说大小写的事。楼主的思路很好,可以写个代码助手,用c#语言来写代码,然后转换成pascal。
      

  4.   

    str := reg.replace(str,'\bbegin\b', '{');
    str := reg.replace(str,'\bend\b\,'}');
    正则两句就完事了,当然前提是先转原来的{}为/* */不然转回去就乱了。就先把begin end替换为{ }就行了,别的再说。如果能这样写代码,可以少敲很多字符,阅读结构也清晰一些。抄袭C?互相借鉴,取长补短,不能固步自封啊。楼上关于预编译器是怎么回事?倒不需要个性化,只是希望delphi能
    把传统pascal改进一下,出个D++或D#什么的(P++,P#也可以,汉语不太好听)
    或者我们自己改进一下,就像很多Delphi的辅助工具。
      

  5.   

    楼主,你想把Pascal改革成C吗?如果你习惯了C你可以选择用C++ Builder
      

  6.   

    呵呵,像楼主那样说,这就不叫pascal了
    每种语言都有自己特定的语法
      

  7.   

    呵呵,没必要死抱着传统pascal不放嘛。Delphi是好,但也不是一点缺陷没有啊。
    Java,C#从Delphi中借鉴了很多,Delphi也可以借鉴它们嘛,不要总是把我的方案扣上什么C,C#之类的帽子,我只是想简化一下Pascal。
    这样岂不是学习外国先进经验就是卖国了。当然也可以把Begin end替换成别的符号,但[ ] ( ) < > 都已经使用了
    只剩{ }, 碰巧和C什么的一样了。对C没必要这么敌视,这样反倒可以吸引一些C,Java,C#用户来Delphi。我得准备吃饭去了,有兴趣的直接联系:email = "floy#163.com"email = replace(email,"#","@")
      

  8.   

    begin/end,我觉得不是问题,因为delphi支持代码自动完成
    我把be定义为:
    Begin
      |
    end;
    每次只要输入be再^j,就完成了!
      

  9.   

    你自己改下不就好了么?直接用C++ Java
      

  10.   

    不兼容就代码的话就不叫Delphi了。
      

  11.   

    改成你说的那样还叫Pascal吗? 
      

  12.   

    如何改革? pascal vista   /new pascal   
      

  13.   

    阅读时仍旧不简明啊。{ }这种对称符号的结构感是很鲜明的。兼容的问题不存在,只是让Delphi多一个使用简化pascal的选择。
    愿意的就运行该外挂,不愿意的还照常啊。
      

  14.   

    没有必要,我觉得begin...end比较好.
      

  15.   

    WITH obj1.fobj11 AS o1,obj2.fobj21 AS o2 DO 
    BEGIN 
      o1.xxx; 
      x:=o2.yyy+o1.yyy; 
    END; 
    也许,只要使用局部对象、指针就行了
    o1:=obj1.fobj11;
    o2:=obj2.fobj21;
    也可以
      o1.xxx; 
      x:=o2.yyy+o1.yyy; 
    就好了! 
    就好了! 
      

  16.   

    WITH obj1.fobj11 AS o1,obj2.fobj21 AS o2 DO 
    BEGIN 
      o1.xxx; 
      x:=o2.yyy+o1.yyy; 
    END; 也许,只要使用局部对象、指针就行了: 
    o1:=obj1.fobj11; 
    o2:=obj2.fobj21; 
    然后就可以:
      o1.xxx; 
      x:=o2.yyy+o1.yyy; 就好了! 
    如果delphi的局部变量允许在任何一个begin-end块里定义(像c++一样),就好了!
    这个“改进”,正则替换估计是很难了
      

  17.   

    不同语言有不同语言的特点
    begin/end改成{}也不见得所有人都能接受,主要是绝大部分用户都习惯了
    习惯的力量是很大的,就如让大家都不用Windows,改用Linux一样从技术角度来看,通过Delphi的插件机制是有可能实现类似的“预处理”的,但这样一来怎么已有代码保持兼容性呢?再别说一大堆的连锁反应了,如IDE的关键字高亮显示、语法分析规则需要修改
    标准只能有一个,否则就不是标准了所以玩一玩可以,实用意义不大
      

  18.   

    begin
    end
    比{}优美多了。
    还是begin...end 好
      

  19.   

    我反而不习惯大括号,begin end多清楚。以前听过一个朋友的一句话,觉得有道理:C系列的语言是要把编程符号化,而PASCAL是要把编程语言化
      

  20.   

    你这是皮毛上的简化,有什么实质性的作用呢,
    只不过给用c或者java的人看着爽一点,起不了关键的作用,
      

  21.   

    Delphi的命名规则全部都是全称,几乎不会用简称的.
    我觉得这样很好,一看就知道意思,不像C++那样,总是用简称,还strcpy,看着别扭,就不能写全吗.
      

  22.   

    Delphi用缩写还是很多的,例如StrToIntDef,就有三个单词是缩写
      

  23.   

    delphi有三种注释方法://
    { ... }
    (* ... *)
      

  24.   

    1、
    呵呵,踢楼主屁股一下。
    罪名:不会数数
    罪证:把{}换成/**/,把=换成==,敲一次键盘变成两次,怎么就更加简洁了呢?2、
    踢楼主屁股无限次,直至认罪并留下永久记忆。
    罪名:冒犯前辈大师,所识不多而信口雌黄
    罪证::= 替换为 =,=替换为==剖析罪证之前,先瞻仰大师风范:
      http://www.cs.inf.ethz.ch/~wirth/
      http://dadalaolang.blog.ccidnet.com/blog-htm-do-showone-uid-46358-itemid-138003-type-blog.html再看看大师的睿智:http://www.cs.inf.ethz.ch/~wirth/Articles/GoodIdeas_origFig.pdf从中节选4.1的一段话:
    A notorious example for a bad idea was the choice of the equal sign to denote assignment. It goes back to Fortran in 1957 and has blindly been copied by armies of language designers. Why is it a bad idea? Because it overthrows a century old tradition to let “=” denote a comparison for equality, a predicate which is either true or false. But Fortran made it to mean assignment, the enforcing of equality. In this case, the operands are on unequal footing: The left operand (a variable) is to be made equal to the right operand (an expression). x = y does not mean the same thing as y = x. Algol corrected this mistake by the simple solution: Let assignment be denoted by “:=”.这个就不翻译了。正正就是切中了这个=号的问题。Pascal的逻辑性正式大师逻辑性的体现,一个优雅的逻辑,在于很多细节上的把握。这使得Pascal更多的有很学院派的气息。
    不同的语言有不同的设计风格,可以根据需要和喜好去选择。但是轻易妄论修改,则有所不该呀。因为,离大师的水平,俺们还差个十万八千里。况且还是楼主这种毫无逻辑可言的表达。
    大家踢屁股吧。
      
    ------------------------------------------------------------------------------------------
    Pascal中的Begin end := 比起其它语言显得罗唆,不够简洁,可否直接修改一下?
    比如begin end 替换为{ },
    { } 注释替换为 /* */
    := 替换为 =
    = 替换为 ==
    等等 
      

  25.   

    我以前用Pascal 六年了,还只听说过第二种方法,汗
      

  26.   

    1.begin,end是pascal的传统,感觉这个问题就像春运太劳民伤财了,是否可以去掉春节一样,没意义
    2.如果你更习惯{},C#更适合你,都是delphi之父的作品,delphi的优点C#都有
    3.这个观点虽然很荒谬,但我觉得很有创意,引申出很多其他有价值的东西,赞一下LZ
      

  27.   


    1 因为begin end 的频率比注释符的频率高很多,
    所有begin end -> {}减少的字符远大于所有{}->/**/的增加字符,
    不影响总体的简化。
    同理 :=的频率远大于 = 的频率,所以还是大大简化了。
    要看总体效果,不要执著于一城一地之得失。2 从初学者的角度,当然:=比=更准确,更易理解,但当计算界普遍把=做为赋值符号
    的时候,仍旧坚持:=略显迂腐。
    要与时俱进,不能执著于文字教条。新出的语言大多选择C的符号流派,如java,javascript,c#,极少
    有继承pascal风格的,.net支持n种语言,却不支持pascal,这是残酷的现实。
    pascal不能固步自封啊,引进一些对手的优点没什么不好啊。
      

  28.   

    begin end更适合阅读
    真要改成大括号还真不习惯不是说不要创新 你这个根本就不可行
    不要觉得别人都是守旧的 你自己喜欢不代表其他人喜欢
      

  29.   

    1 因为begin end 的频率比注释符的频率高很多, 
    所有begin end -> {}减少的字符远大于所有{}->/**/的增加字符, 
    不影响总体的简化。 
    同理 :=的频率远大于 = 的频率,所以还是大大简化了。 
    要看总体效果,不要执著于一城一地之得失装个cnpack吧,打be就出来begin...end了
      

  30.   

    楼主多用下Delphi就不觉得Begin end烦了
      

  31.   

    你直接寫C 不就好了, 何苦去寫Pascal 呢
      

  32.   

     你这直接玩C吧 别学Delphi了
      

  33.   


    不用cnpack,delphi的^j自动完成可以自定义的,把be定义为begin | end就行了
      

  34.   

    我知道,但是ctrl+j的操作显然没有cnpack的方便,起码你要多打一次“ctrl+j”。
      

  35.   

    /* some comment */ 
    这样好看 
    靠 := 替换为 =
    = 替换为 == 你个垃圾
    C++ 来的吧
    在pas里 当 我想找某个变量在哪赋值时搜:=就好了 C++ 怎么搜 SB了吧
    是不是还要把PTObject.create 改成 PTObject->create 你才高兴啊
    SB