Python论坛  - 讨论区

标题:[python-chinese] 函数的正则怎么写啊?

2007年09月06日 星期四 09:16

侯华隆 hou_hl在sina.com
星期四 九月 6 09:16:27 HKT 2007

Ö»ÊÇºÜÆÕͨµÄº¯Êý£¬Ã»ÄÇô¸´ÔÓ£¬Êǵ¥Æ¬»úºÍ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 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月06日 星期四 11:25

shhgs shhgs.efhilt在gmail.com
星期四 九月 6 11:25:23 HKT 2007

[^)]+?)

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
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月06日 星期四 12:15

BloodMage zhouyisu在gmail.com
星期四 九月 6 12:15:47 HKT 2007

ÕýÔÚдһ¸ö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 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月06日 星期四 13:06

侯华隆 hou_hl在sina.com
星期四 九月 6 13:06:48 HKT 2007

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 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月06日 星期四 13:44

Cyril_Gmail terry6394在gmail.com
星期四 九月 6 13:44:56 HKT 2007

非常牛!

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 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号