2007年09月06日 星期四 09:16
Ö»ÊÇºÜÆÕͨµÄº¯Êý£¬Ã»ÄÇô¸´ÔÓ£¬Êǵ¥Æ¬»úºÍfpgaµÄ³ÌÐò£¬ºê¶¨Òå²»ÓùÜ,¶øÇÒÀàÐͶàÊÇÎÞ·ûºÅcharÐ͵ģ¬Ö¸Õë¾ÍÔÚºóÃæ¼ÓÒ»¸ö'\s*\*'¾Í¿ÉÒÔÌáÈ¡µÄ³öÀ´£¬Ö»ÊDz»ÖªµÀΪʲôƥÅäµ½²ÎÊýµÄʱºò£¬¾ÍÊÇÒ»¸öÀàÐÍ+Ò»¸ö±äÁ¿µÄʱºò²»ÖªµÀÔõô×éºÏ±ÈÈç˵£¨type+var£©*£¬ÓÃgroupÌáÈ¡µÄʱºò£¬Ö»ÓÐ×îºóÒ»¸ö±äÁ¿¡£¡£¡£±È½ÏÓôÃÆ ----- Original Message ----- From:Leo Jay To:python-chinese在lists.python.cn Subject:Re: [python-chinese] º¯ÊýµÄÕýÔòÔõôд°¡? Date:07-09-05 17:24:49 ºî»ªÂ¡ 2007-09-06 -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070906/3e141330/attachment.html
2007年09月06日 星期四 11:25
[^)]+?) On 9/5/07, 侯华隆 <hou_hl在sina.com> wrote: > > > 只是很普通的函数,没那么复杂,是单片机和fpga的程序,宏定义不用管,而且类型多是无符号char型的,指针就在后面加一个'\s*\*'就可以提取的出来,只是不知道为什么匹配到参数的时候,就是一个类型+一个变量的时候不知道怎么组合比如说(type+var)*,用group提取的时候,只有最后一个变量。。。比较郁闷 > ----- Original Message ----- > From:Leo Jay > To:python-chinese在lists.python.cn > Subject:Re: [python-chinese] 函数的正则怎么写啊? > Date:07-09-05 17:24:49 > > > > ________________________________ > > 侯华隆 > 2007-09-06 > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to > python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to > python-chinese-request在lists.python.cn > Detail Info: > http://python.cn/mailman/listinfo/python-chinese >
2007年09月06日 星期四 12:15
ÕýÔÚдһ¸öParseC++µÄÏîÄ¿£¬Õâ¸öÕýÔò±íû°üº¬ºê,Ä£°å, typedef,point-to-member,function pointer£¬´ÕºÏÓÃ°É C++ grammar summary Execution parts: ////////////////////////Well-known definitions: (They do only their business, any stuff not belong to them will be not processed) blank: \s* strictblank: \s+ number: OR: r"[\d]+",r"[.][\d]+",r"[\d]+[.][\d]*", r"[\d]+[.]?e(?:[+]|-|)[\d]+",r"[.]?[\d]+(?:e|E)(?:[+]|-|)[\d]+", r"[\d]+[.][\d]*e(?:[+]|-|)[\d]+", r"0[xX][0-9a-fA-F]+", #Hex number r"0[0-8]+", #Octal number r"'[^']+'" string: "(?:[^\\]|\\.)+" value: [bool|number|string] literal: [a-zA-Z_][0-9a-zA-Z_]* bool: [true|false] ////////////////////////Semi-atom level definitions: (iterates will process all begin blank but no after blanks will be processed) type: literal (blank :: blank literal)* valueiterate: (blank(operators|operator,|value|literal| [(] strictvalueiterate blank [)]))* strictvalueiterate: (blank(operators|operator,|value|literal| [(] strictvalueiterate blank [)]))+ passvalueiterate: (blank(operators|value|literal| [(] strictvalueiterate blank [)]))* strictpassvalueiterate: (blank(operators|value|literal| [(] strictvalueiterate blank [)]))+ operators: OR: "new","delete","delete" blank [ blank ],"++","--","<<",">>", "!","&&","||",">=","<=",">","<","!=","==", "+=","-=","*=","/=","%=", "^=","&=","|=", "->",",", ".","::", "^","&","|","~", "+","-","*","/","%", "[","]","(",")" assignname: (blank [*|&])* blank literal (blank [ blank \d* blank ] )* assignvaluector: blank [(] (blank strictpassvalueiterate (blank , blank strictpassvalueiterate)+)? [)] assignvaluecopy: blank = blank strictpassvalueiterate assignvaluevoid: assignvalue: ( assignvaluector | assignvaluecopy | ) valuesingledefinition: blank type blank assignname (assignvaluector | assignvaluevoid) functionspecifier: (blank [inline|virtual|explicit|auto|register|static|extern|mutable|extern|static])* ////////////////////////Atom level definitions: (Every thing that can be treated as a language sentence) (only begin either) valueblock: valueiterate blank ; if: blank "if\b" blank ( strictvalueiterate blank ) [sentencelite|sentenceblock] for: blank "for\b" blank ( [valuesingledefinition|passvalueiterate] blank ; passvalueiterate blank ; passvalueiterate blank ) [sentencelite|sentenceblock] while: blank "while\b" blank ( strictvalueiterate blank ) [sentencelite|sentenceblock] do: blank "do\b" blank sentenceblock blank while blank ( strictvalueiterate blank ) blank ; break: blank "break\b" blank ; return: blank "return\b" [strictvalueiterate|] blank ; sentencelite: blank [break|return|valueiterate blank ;] valueassign: blank type blank assignname assignvalue (blank , assignname assignvalue)* blank ; sentence: [sentencelite|valueassign] ////////////////////////Segments: (only begin either) sentenceblock: blank { blank (sentence)* blank } structblock: blank { blank [public:|private:|valueassign|function|struct|structdef] blank } ////////////////////////First class objects: function: blank functionspecifier blank type blank ( blank (valuesingledefinition (blank , valuesingledefinition)* )? blank ) [(blank : blank type blank "(" sentence blank ")" (blank , blank type blank "(" sentence blank ")")*)? sentenceblock|;|= blank 0 blank ;] namespace: blank "namespace" blank literal blank { blank document blank } usenamespace: blank use blank "namespace" blank literal blank ; struct: blank ["struct"|class|union] blank literal [blank : (blank [public|private|protected|] blank literal (blank , blank [public|private|protected|] blank literal)*)? structblock ( blank assignname assignvalue (blank , assignname assignvalue)*)? blank ; structdef: blank ["struct"|class|union] blank literal blank ; document: (blank [ valueassign|function|namespace|struct|structdef ])* -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070906/2beeaef3/attachment.htm
2007年09月06日 星期四 13:06
I'm proud of you ºî»ªÂ¡ 2007-09-06 ·¢¼þÈË£º BloodMage ·¢ËÍʱ¼ä£º 2007-09-06 12:16:23 ÊÕ¼þÈË£º python-chinese在lists.python.cn ³ËÍ£º Ö÷Ì⣺ Re: [python-chinese]º¯ÊýµÄÕýÔòÔõôд°¡? ÕýÔÚдһ¸öParseC++µÄÏîÄ¿£¬Õâ¸öÕýÔò±íû°üº¬ºê,Ä£°å, typedef,point-to-member,function pointer£¬´ÕºÏÓÃ°É C++ grammar summary Execution parts: ////////////////////////Well-known definitions: (They do only their business, any stuff not belong to them will be not processed) blank: \s* strictblank: \s+ number: OR: r"[\d]+",r"[.][\d]+",r"[\d]+[.][\d]*", r"[\d]+[.]?e(?:[+]|-|)[\d]+",r"[.]?[\d]+(?:e|E)(?:[+]|-|)[\d]+", r"[\d]+[.][\d]*e(?:[+]|-|)[\d]+", r"0[xX][0-9a-fA-F]+", #Hex number r"0[0-8]+", #Octal number r"'[^']+'" string: "(?:[^\\]|\\.)+" value: [bool|number|string] literal: [a-zA-Z_][0-9a-zA-Z_]* bool: [true|false] ////////////////////////Semi-atom level definitions: (iterates will process all begin blank but no after blanks will be processed) type: literal (blank :: blank literal)* valueiterate: (blank(operators|operator,|value|literal| [(] strictvalueiterate blank [)]))* strictvalueiterate: (blank(operators|operator,|value|literal| [(] strictvalueiterate blank [)]))+ passvalueiterate: (blank(operators|value|literal| [(] strictvalueiterate blank [)]))* strictpassvalueiterate: (blank(operators|value|literal| [(] strictvalueiterate blank [)]))+ operators: OR: "new","delete","delete" blank [ blank ],"++","--","<<",">>", "!","&&","||",">=","<=",">","<","!=","==", "+=","-=","*=","/=","%=", "^=","&=","|=", "->",",", ".","::", "^","&","|","~", "+","-","*","/","%", "[","]","(",")" assignname: (blank [*|&])* blank literal (blank [ blank \d* blank ] )* assignvaluector: blank [(] (blank strictpassvalueiterate (blank , blank strictpassvalueiterate)+)? [)] assignvaluecopy: blank = blank strictpassvalueiterate assignvaluevoid: assignvalue: ( assignvaluector | assignvaluecopy | ) valuesingledefinition: blank type blank assignname (assignvaluector | assignvaluevoid) functionspecifier: (blank [inline|virtual|explicit|auto|register|static|extern|mutable|extern|static])* ////////////////////////Atom level definitions: (Every thing that can be treated as a language sentence) (only begin either) valueblock: valueiterate blank ; if: blank "if\b" blank ( strictvalueiterate blank ) [sentencelite|sentenceblock] for: blank "for\b" blank ( [valuesingledefinition|passvalueiterate] blank ; passvalueiterate blank ; passvalueiterate blank ) [sentencelite|sentenceblock] while: blank "while\b" blank ( strictvalueiterate blank ) [sentencelite|sentenceblock] do: blank "do\b" blank sentenceblock blank while blank ( strictvalueiterate blank ) blank ; break: blank "break\b" blank ; return: blank "return\b" [strictvalueiterate|] blank ; sentencelite: blank [break|return|valueiterate blank ;] valueassign: blank type blank assignname assignvalue (blank , assignname assignvalue)* blank ; sentence: [sentencelite|valueassign] ////////////////////////Segments: (only begin either) sentenceblock: blank { blank (sentence)* blank } structblock: blank { blank [public:|private:|valueassign|function|struct|structdef] blank } ////////////////////////First class objects: function: blank functionspecifier blank type blank ( blank (valuesingledefinition (blank , valuesingledefinition)* )? blank ) [(blank : blank type blank "(" sentence blank ")" (blank , blank type blank "(" sentence blank ")")*)? sentenceblock|;|= blank 0 blank ;] namespace: blank "namespace" blank literal blank { blank document blank } usenamespace: blank use blank "namespace" blank literal blank ; struct: blank ["struct"|class|union] blank literal [blank : (blank [public|private|protected|] blank literal (blank , blank [public|private|protected|] blank literal)*)? structblock ( blank assignname assignvalue (blank , assignname assignvalue)*)? blank ; structdef: blank ["struct"|class|union] blank literal blank ; document: (blank [ valueassign|function|namespace|struct|structdef ])* -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070906/d45c751a/attachment.html
2007年09月06日 星期四 13:44
非常牛! On 9/6/07, BloodMage <zhouyisu at gmail.com> wrote: > > 正在写一个ParseC++的项目,这个正则表没包含宏,模板, typedef,point-to-member,function > pointer,凑合用吧 > > > C++ grammar summary > > Execution parts: > > ////////////////////////Well-known definitions: (They do only their > business, any stuff not belong to them will be not processed) > blank: \s* > strictblank: \s+ > number: OR: > r"[\d]+",r"[.][\d]+",r"[\d]+[.][\d]*", > > r"[\d]+[.]?e(?:[+]|-|)[\d]+",r"[.]?[\d]+(?:e|E)(?:[+]|-|)[\d]+", > r"[\d]+[.][\d]*e(?:[+]|-|)[\d]+", > r"0[xX][0-9a-fA-F]+", #Hex number > r"0[0-8]+", #Octal number > r"'[^']+'" > string: "(?:[^\\]|\\.)+" > value: [bool|number|string] > literal: [a-zA-Z_][0-9a-zA-Z_]* > bool: [true|false] > > ////////////////////////Semi-atom level definitions: (iterates will > process all begin blank but no after blanks will be processed) > type: literal (blank :: blank literal)* > valueiterate: (blank(operators|operator,|value|literal| [(] > strictvalueiterate blank [)]))* > strictvalueiterate: (blank(operators|operator,|value|literal| [(] > strictvalueiterate blank [)]))+ > passvalueiterate: (blank(operators|value|literal| [(] strictvalueiterate > blank [)]))* > strictpassvalueiterate: (blank(operators|value|literal| [(] > strictvalueiterate blank [)]))+ > operators: OR: > "new","delete","delete" blank [ blank > ],"++","--","<<",">>", > "!","&&","||",">=","<=",">","<","!=","==", > "+=","-=","*=","/=","%=", > "^=","&=","|=", > "->",",", > ".","::", > "^","&","|","~", > "+","-","*","/","%", > "[","]","(",")" > > assignname: (blank [*|&])* blank literal (blank [ blank \d* blank ] )* > > assignvaluector: blank [(] (blank strictpassvalueiterate (blank , blank > strictpassvalueiterate)+)? [)] > assignvaluecopy: blank = blank strictpassvalueiterate > assignvaluevoid: > assignvalue: ( assignvaluector | assignvaluecopy | ) > valuesingledefinition: blank type blank assignname (assignvaluector | > assignvaluevoid) > > functionspecifier: (blank > [inline|virtual|explicit|auto|register|static|extern|mutable|extern|static])* > > ////////////////////////Atom level definitions: (Every thing that can be > treated as a language sentence) (only begin either) > valueblock: valueiterate blank ; > if: blank "if\b" blank ( strictvalueiterate blank ) > [sentencelite|sentenceblock] > for: blank "for\b" blank ( [valuesingledefinition|passvalueiterate] blank > ; passvalueiterate blank ; passvalueiterate blank ) > [sentencelite|sentenceblock] > while: blank "while\b" blank ( strictvalueiterate blank ) > [sentencelite|sentenceblock] > do: blank "do\b" blank sentenceblock blank while blank ( > strictvalueiterate blank ) blank ; > break: blank "break\b" blank ; > return: blank "return\b" [strictvalueiterate|] blank ; > > sentencelite: blank [break|return|valueiterate blank ;] > valueassign: blank type blank assignname assignvalue (blank , assignname > assignvalue)* blank ; > sentence: [sentencelite|valueassign] > > ////////////////////////Segments: (only begin either) > sentenceblock: blank { blank (sentence)* blank } > structblock: blank { blank > [public:|private:|valueassign|function|struct|structdef] blank } > > ////////////////////////First class objects: > function: blank functionspecifier blank type blank ( blank > (valuesingledefinition (blank , valuesingledefinition)* )? blank ) > [(blank : blank type blank "(" sentence blank ")" (blank , blank > type blank "(" sentence blank ")")*)? sentenceblock|;|= blank 0 blank ;] > namespace: blank "namespace" blank literal blank { blank document blank } > usenamespace: blank use blank "namespace" blank literal blank ; > struct: blank ["struct"|class|union] blank literal [blank : (blank > [public|private|protected|] blank literal (blank , blank > [public|private|protected|] blank literal)*)? structblock ( blank assignname > assignvalue (blank , assignname assignvalue)*)? blank ; > structdef: blank ["struct"|class|union] blank literal blank ; > document: (blank [ valueassign|function|namespace|struct|structdef ])* > > > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070906/3d563059/attachment-0001.htm
Zeuux © 2025
京ICP备05028076号