亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? erlparser.ly

?? 編譯器 像YACC的編譯及語法產(chǎn)生器
?? LY
字號:
-----------------------------------------------------------------------------$Id: ErlParser.ly,v 1.2 1997/09/24 10:11:23 simonm Exp $Syntactic analyser for ErlangCopyright : (c) 1996 Ellemtel Telecommunications Systems Laborotories, SwedenAuthor    : Simon Marlow <simonm@dcs.gla.ac.uk>-----------------------------------------------------------------------------> {> module Parser (parse) where> import GenUtils> import Lexer> import AbsSyn> import Types> import ParseMonad> }> %token> 	atom		{ T_Atom $$ }> 	var		{ T_Var $$ }>	int		{ T_Int $$ }>	float		{ T_Float $$ }>	string		{ T_String $$ }> 	'bor'		{ T_Bor }> 	'bxor'		{ T_Bxor }>	'bsl'		{ T_Bsl }>	'bsr'		{ T_Bsr }>	'div'		{ T_Div }>	'rem'		{ T_Rem }>	'band'		{ T_Band }>	'bnot'		{ T_Bnot }>	'begin'    	{ T_Begin }>	'end'    	{ T_End }>	'catch'    	{ T_Catch }>	'case'    	{ T_Case }>	'of'    	{ T_Of }>	'if'    	{ T_If }>	'receive'    	{ T_Receive }>	'after'    	{ T_After }>	'when'    	{ T_When }>	'fun'		{ T_Fun }>	'true'    	{ T_True }>	'deftype'	{ T_DefType }>	'type'		{ T_Type }> 	'+'		{ T_Plus }> 	'-'		{ T_Minus }> 	'*'		{ T_Mult }> 	'/'		{ T_Divide }> 	'=='		{ T_Eq }> 	'/='		{ T_Neq }> 	'=<'		{ T_Leq }> 	'<'		{ T_Lt }> 	'>='		{ T_Geq }> 	'>'		{ T_Gt }> 	'=:='		{ T_ExactEq }> 	'=/='		{ T_ExactNeq } > 	'!'		{ T_Pling }> 	'='		{ T_Equals }> 	'['		{ T_LSquare }> 	']'		{ T_RSquare }> 	'('		{ T_LParen }> 	')'		{ T_RParen }> 	'{'		{ T_LCurly }> 	'}'		{ T_RCurly }> 	','		{ T_Comma }> 	';'		{ T_SemiColon }> 	'|'		{ T_Bar }> 	':'		{ T_Colon }> 	'->'		{ T_Arrow }> 	'.'		{ T_Dot }>	'\\'		{ T_BackSlash }>	header_prog	{ T_Prog }>	header_iface	{ T_Interface }> %monad { P } { thenP } { returnP }> %lexer { lexer } { T_EOF }> %name parse> %tokentype	{ Token }> %%> parse :: { ProgOrInterface }> 	: header_prog program		{ It's_a_prog   $2 }> 	| header_iface interface	{ It's_an_iface $2 }> program :: { [Form] }> 	: 				{ [] }>	| form program			{ $1 : $2 }> add_op :: { BinOp }> 	: '+'				{ O_Add }>	| '-'				{ O_Subtract }>	| 'bor'				{ O_Bor }>	| 'bxor'			{ O_Bxor }>	| 'bsl'				{ O_Bsl }>	| 'bsr'				{ O_Bsr }> comp_op :: { CompOp }> 	: '=='				{ O_Eq }>	| '/='				{ O_Neq }>	| '=<'				{ O_Leq }>	| '<'				{ O_Lt }>	| '>='				{ O_Geq }>	| '>'				{ O_Gt }>	| '=:='				{ O_ExactEq }>	| '=/='				{ O_ExactNeq }> mult_op :: { BinOp }> 	: '*'				{ O_Multiply }>	| '/'				{ O_Divide }>	| 'div'				{ O_Div }>	| 'rem'				{ O_Rem }>	| 'band'			{ O_Band }> prefix_op :: { UnOp }> 	: '+'				{ O_Plus }>	| '-'				{ O_Negate }>	| 'bnot'			{ O_Bnot }> basic_type :: { Expr }> 	: atm				{ E_Atom $1 }>	| int				{ E_Int $1 }>	| float				{ E_Float $1 }>	| string		{ foldr E_Cons E_Nil (map (E_Int . ord) $1) }>	| var				{ E_Var $1 }> pattern :: { Expr }> 	: basic_type			{ $1 }>	| '[' ']'			{ E_Nil }>	| '[' pattern pat_tail ']'	{ E_Cons $2 $3 }>	| '{' '}'			{ E_Tuple [] }>	| '{' patterns '}'		{ E_Tuple $2 }>	| atm '{' patterns '}'		{ E_Struct $1 $3 }> pat_tail :: { Expr }> 	: '|' pattern			{ $2 }>	| ',' pattern pat_tail		{ E_Cons $2 $3 }>	|				{ E_Nil }> patterns :: { [ Expr ] }> 	: pattern			{ [ $1 ] }>	| pattern ',' patterns		{ $1 : $3 }> expr :: { Expr }>	: 'catch' expr			{ E_Catch $2 }>	| 'fun' '(' formal_param_list ')' '->' expr 'end' { E_Fun $3 $6 }>	| 'fun' var '/' int		{ E_FunName (LocFun $2 $4) }>	| 'fun' var ':' var '/' int	{ E_FunName (ExtFun $2 $4 $6) }>	| expr200			{ $1 }> expr200 :: { Expr }>	: expr300 '=' expr		{ E_Match $1 $3 }>	| expr300 '!' expr		{ E_Send $1 $3 }>	| expr300			{ $1 }> expr300 :: { Expr }> 	: expr300 add_op expr400	{ E_BinOp $2 $1 $3 }>	| expr400			{ $1 }> expr400 :: { Expr }> 	: expr400 mult_op expr500	{ E_BinOp $2 $1 $3 }>	| expr500			{ $1 }> expr500 :: { Expr }> 	: prefix_op expr0		{ E_UnOp $1 $2 }>	| expr0				{ $1 }> expr0 :: { Expr }> 	: basic_type				{ $1 }> 	| '[' ']'				{ E_Nil }>	| '[' expr expr_tail ']'		{ E_Cons $2 $3 }>	| '{' maybeexprs '}'			{ E_Tuple $2 }>	| atm '{' maybeexprs '}'		{ E_Struct $1 $3 }> 	| atm '(' maybeexprs ')'  { E_Call (LocFun $1 (length $3)) $3 }>	| atm ':' atm '(' maybeexprs ')' >				  { E_Call (ExtFun $1 $3 (length $5)) $5 }>	| '(' expr ')'				{ $2 }>	| 'begin' exprs 'end'			{ E_Block $2 }>	| 'case' expr 'of' cr_clauses 'end'  	{ E_Case $2 $4 }>	| 'if' if_clauses 'end'			{ E_If $2 }> 	| 'receive' 'after' expr '->' exprs 'end'>					{ E_Receive [] (Just ($3,$5)) }>	| 'receive' cr_clauses 'end'	{ E_Receive $2 Nothing }>	| 'receive' cr_clauses 'after' expr '->' exprs 'end'>					{ E_Receive $2 (Just ($4,$6)) }> expr_tail :: { Expr }> 	: '|' expr			{ $2 }>	| ',' expr expr_tail		{ E_Cons $2 $3 }>	| 				{ E_Nil }> cr_clause :: { CaseClause }> 	: expr clause_guard '->' exprs 	{ ($1,$2,$4) }> clause_guard :: { [ GuardTest ] }> 	: 'when' guard			{ $2 }>	|				{ [] }> cr_clauses :: { [ CaseClause ] }> 	: cr_clause			{ [ $1 ] }>	| cr_clause ';' cr_clauses	{ $1 : $3 }> if_clause :: { IfClause }> 	: guard '->' exprs		{ ($1,$3) }> if_clauses :: { [ IfClause ] }> 	: if_clause			{ [ $1 ] }>	| if_clause ';' if_clauses	{ $1 : $3 }> maybeexprs :: { [ Expr ] }>	: exprs				{ $1 }>	|				{ [] }> exprs :: { [ Expr ] }> 	: expr				{ [ $1 ] }>	| expr ',' exprs		{ $1 : $3 }> guard_test :: { GuardTest }> 	: atm '(' maybeexprs ')' 	{ G_Bif $1 $3 }>	| expr300 comp_op expr300       { G_Cmp $2 $1 $3 }> guard_tests :: { [ GuardTest ] }> 	: guard_test			{ [ $1 ] }>	| guard_test ',' guard_tests	{ $1 : $3 }> guard :: { [ GuardTest ] }> 	: 'true'			{ [] }>	| guard_tests			{ $1 }> function_clause :: { FunctionClause }> 	: atm '(' formal_param_list ')' clause_guard '->' exprs>					{ (LocFun $1 (length $3),$3,$5,$7) }> formal_param_list :: { [ Expr ] }>	:				{ [] }> 	| patterns			{ $1 }> function :: { Function }> 	: function_clause		{ [ $1 ] }>	| function_clause ';' function	{ $1 : $3 }> attribute :: { Attribute }> 	: pattern			{ A_Pat $1 }>	| '[' farity_list ']'		{ A_Funs $2 }>	| atm ',' '[' maybe_farity_list ']'	{ A_AtomAndFuns $1 $4 }> maybe_farity_list :: { [ Fun ] }> 	: farity_list			{ $1 }>	| 				{ [] }> farity_list :: { [ Fun ] }> 	: farity			{ [ $1 ] }>	| farity ',' farity_list	{ $1 : $3 }> farity :: { Fun }> 	: atm '/' int			{ LocFun $1 $3 }> form :: { Form }> 	: '-' atm '(' attribute ')' '.'  { F_Directive $2 $4 }>	| '-' 'type' sigdef '.'		 { $3 }>	| '-' 'deftype' deftype '.'	 { $3 }>	| function '.'			 { F_Function $1 }> abstype :: { Form }>	: atm '(' maybetyvars ')' maybeconstraints	>		{ F_AbsTypeDef (Tycon $1 (length $3)) $3 (snd $5) }> deftype :: { Form }> 	: atm '(' maybetyvars ')' '=' utype maybeconstraints>		{ F_TypeDef (Tycon $1 (length $3)) $3 $6 (fst $7) (snd $7) }> sigdef :: { Form }> 	: atm '(' maybeutypes ')' '->' utype maybeconstraints>		{ F_TypeSig  ($1,length $3) $3 $6 (fst $7) (snd $7) }> header :: { (String,Int,[UType]) }>	 : atm '(' maybeutypes ')'		{ ($1, length $3, $3) }> tycon_args :: { [ TyVar ] }>	: tycon_args ',' var			{ STyVar $3 : $1 }> 	| var					{ [ STyVar $1 ] }-----------------------------------------------------------------------------Interfaces & Types> interface :: { (Module, [ Form ]) }> 	: '-' atm '(' atm ')' '.' signatures>					{ ($4, $7) }> signatures :: { [ Form ] }> 	: signatures typedef '.'	{ $2 : $1 }>	|				{ [] }> typedef :: { Form }> typedef>	: '-' 'deftype' deftype		{ $3 }>	| '-' 'deftype' abstype		{ $3 }>	| sigdef			{ $1 }> maybeconstraints :: { ([Constraint], [VarConstraint]) }> 	: 'when' constraints 		{ splitConstraints $2 }>	|				{ ([],[]) }> constraints :: { [ VarOrTypeCon ] }> 	: constraints ';' constraint	{ $1 ++ $3 }>	| constraint			{ $1 }> constraint :: { [ VarOrTypeCon ] }> 	: utype '<' '=' utype		{ [TypeCon ($1,$4)] }>	| utype '=' utype		{ [TypeCon ($1,$3),TypeCon($3,$1)] }>	| var '\\' tags			{ [VarCon (STyVar $1,(canonTags $3))] }> maybeutypes :: { [ UType ] }>	: utypes			{ reverse $1 }>	|				{ [] }> utypes :: { [ UType ] }> 	: utypes ',' utype		{ $3 : $1 }>	| utype				{ [$1] }> maybetyvars :: { [ TyVar ] }>	: tyvars			{ reverse $1 }>	|				{ [] }> tyvars :: { [ TyVar ] }>	: tyvars ',' var		{ STyVar $3 : $1 }>	| var				{ [ STyVar $1 ] }> utype :: { UType }> 	: ptypes			{ U (reverse $1) [] }>	| ptypes '|' tyvar		{ U (reverse $1) [$3] }>	| tyvar				{ U [] [$1] }>	| '(' utype ')'			{ $2 }>	| '(' ')'			{ U [] [] }> tyvar :: { TaggedTyVar }> 	: var				{ TyVar [] (STyVar $1) }>	| int				{ if $1 /= 1 then>						error "Illegal type variable">					  else universalTyVar }>	| int '\\' tags			{ if $1 /= 1 then>						error "Illegal type variable">					  else partialUniversalTyVar $3 }> ptypes :: { [ PType ] }> 	: ptypes '|' ptype		{ $3 : $1 }> 	| ptype				{ [$1] }> ptype :: { PType }> 	: atm '(' ')'			{ conToType $1 [] }>	| atm '(' utypes ')'		{ conToType $1 (reverse $3) }> 	| atm				{ TyAtom $1 }>	| '{' utypes '}'		{ tytuple (reverse $2) }>	| atm '{' maybeutypes '}'	{ TyStruct $1 $3 }>	| '[' utype ']'			{ tylist $2 }> taglist :: { [ Tag ] }> 	: taglist ',' tag		{ $3 : $1 }> 	| tag				{ [ $1 ] }> tags  :: { [ Tag ] }>	: tag				{ [ $1 ] }>	| '(' taglist ')'		{ $2 }> tag	:: { Tag }>  	: atm '(' ')'			{ conToTag $1 }> 	| atm				{ TagAtom $1 }>	| atm '/' int			{ TagStruct $1 $3 }>	| '{' int '}'			{ tagtuple $2 }>	| '[' ']'			{ taglist }Horrible - keywords that can be atoms too.> atm	:: { String }> 	: atom				{ $1 }> 	| 'true'			{ "true" }>	| 'deftype'			{ "deftype" }>	| 'type'			{ "type" }> {> utypeToVar (U [] [TyVar [] x]) = x> utypeToVar _ = error "Type constructor arguments must be variables\n"> happyError :: P a> happyError s line = failP (show line ++ ": Parse error\n") s line> }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱码精品一区二区三区av | 国产午夜精品一区二区| 欧美中文字幕一二三区视频| 99久久婷婷国产综合精品| 国产成人午夜视频| 国产成人在线电影| 懂色av一区二区夜夜嗨| 福利视频网站一区二区三区| 成人精品小蝌蚪| 欧美mv日韩mv国产网站| 国产成人av电影在线观看| 国产一区二区三区免费看| 国内成人免费视频| 国产一区二区免费视频| 国产 欧美在线| 波波电影院一区二区三区| 成人精品视频一区| 97aⅴ精品视频一二三区| 色综合久久中文综合久久97| 欧美亚洲丝袜传媒另类| 日韩一本二本av| 国产欧美精品区一区二区三区 | 大胆欧美人体老妇| 国产精品系列在线播放| 国产乱国产乱300精品| 国产精品69久久久久水密桃| 不卡一区二区中文字幕| 色成年激情久久综合| 7777精品伊人久久久大香线蕉完整版 | 亚洲一区二区在线播放相泽| 首页亚洲欧美制服丝腿| 国产一区二区三区久久久| 成人av动漫在线| 91麻豆精品国产91久久久久| 国产亚洲一本大道中文在线| 一区二区三区精密机械公司| 午夜精品一区二区三区免费视频| 精品一区二区免费| 91免费看片在线观看| 日韩欧美久久久| 亚洲视频在线观看三级| 国产精品麻豆久久久| 欧美久久久久久蜜桃| 欧美tickling挠脚心丨vk| 欧美国产日韩亚洲一区| 亚洲国产精品视频| 国产精品夜夜嗨| 欧美日韩精品欧美日韩精品| 久久影院视频免费| 亚洲第四色夜色| 国产成人夜色高潮福利影视| 欧美日韩激情一区二区| 中文字幕乱码一区二区免费| 亚洲777理论| 99久久精品免费看国产| 精品国产区一区| 亚洲一区在线播放| av欧美精品.com| 久久影视一区二区| 日韩国产高清影视| 欧美午夜影院一区| 亚洲日本成人在线观看| 国产精品99久久久久久久女警 | 久久亚洲精品小早川怜子| 一区二区成人在线视频| av成人免费在线观看| 久久久久久亚洲综合| 男男gaygay亚洲| 欧美美女视频在线观看| 亚洲一区二区在线免费观看视频| 95精品视频在线| 中文字幕日韩一区二区| 成人免费的视频| 亚洲国产高清在线| 国产成人高清在线| 国产日产欧美一区| 成人av电影在线观看| 国产色产综合色产在线视频| 国产精品亚洲专一区二区三区| 日韩精品专区在线| 精品一区二区三区在线观看国产| 欧美一区二区三区视频在线| 五月激情六月综合| 日韩手机在线导航| 久草这里只有精品视频| 久久亚区不卡日本| 国产一区二区美女诱惑| 中国色在线观看另类| 不卡av在线免费观看| 亚洲品质自拍视频网站| 在线观看视频一区二区| 国产综合色精品一区二区三区| 一个色妞综合视频在线观看| 99久久综合国产精品| 亚洲色欲色欲www| 在线观看一区不卡| 奇米影视一区二区三区小说| 久久久蜜臀国产一区二区| 高清不卡在线观看av| 亚洲视频每日更新| 欧美性极品少妇| 国产在线精品一区在线观看麻豆| 久久九九久精品国产免费直播| 成人黄色软件下载| 亚洲国产乱码最新视频 | 日韩精品久久久久久| 欧美第一区第二区| av不卡一区二区三区| 亚洲地区一二三色| 一区二区三区四区乱视频| 懂色av一区二区夜夜嗨| 亚洲国产精品一区二区久久恐怖片| 欧美日韩黄色影视| 国产成人精品三级麻豆| 亚洲一区二区三区四区的| 精品成人在线观看| 日本韩国精品在线| 国产露脸91国语对白| 亚洲一二三区视频在线观看| 久久人人97超碰com| 在线视频观看一区| 国产成人久久精品77777最新版本| 亚洲精品国产精华液| 欧美精品一区二区在线播放| 欧美私人免费视频| 成人av在线资源网站| www.激情成人| 狠狠色丁香久久婷婷综合丁香| 亚洲乱码中文字幕| 国产午夜精品福利| 91精品国产综合久久精品性色| 99久久久国产精品免费蜜臀| 久久99国产精品久久99果冻传媒| 亚洲一区二区三区四区不卡| 国产日本一区二区| 日韩精品一区二区在线观看| 欧美日韩免费高清一区色橹橹| 国产精品系列在线播放| 久久国产生活片100| 午夜一区二区三区视频| 亚洲精品视频在线观看免费 | 国产成人av自拍| 久草精品在线观看| 奇米影视一区二区三区| 午夜成人免费电影| 亚洲国产日韩在线一区模特| 一区二区视频在线| 一区二区视频免费在线观看| 国产精品久久精品日日| 国产精品视频一二| 日本一区二区免费在线观看视频 | 国产精品色哟哟| 国产欧美日韩激情| 国产日本欧洲亚洲| 欧美高清在线一区二区| 久久久久国产一区二区三区四区| 精品福利一二区| 国产夜色精品一区二区av| 欧美激情一区二区在线| 中文在线资源观看网站视频免费不卡| 久久久久久久av麻豆果冻| 精品国产一区二区三区久久久蜜月| 欧美一区二区三区四区高清| 日韩小视频在线观看专区| 精品欧美一区二区在线观看| 精品国产一区二区三区av性色| 久久综合久久99| 亚洲国产成人在线| 亚洲日本护士毛茸茸| 亚洲在线成人精品| 日韩综合小视频| 久草中文综合在线| 成人精品免费看| 精品奇米国产一区二区三区| 国产片一区二区三区| 亚洲丝袜自拍清纯另类| 亚洲福利视频一区二区| 蜜臀av在线播放一区二区三区| 精品中文字幕一区二区| 国产suv一区二区三区88区| 99久久精品一区| 91 com成人网| 中文在线免费一区三区高中清不卡| 国产精品蜜臀在线观看| 亚洲午夜精品网| 久久成人综合网| 91视视频在线观看入口直接观看www | 4438x亚洲最大成人网| 日本一区二区免费在线| 亚洲午夜久久久久久久久久久| 九一九一国产精品| 一本一道综合狠狠老| 日韩一级二级三级精品视频| 国产精品乱码人人做人人爱| 亚洲va欧美va国产va天堂影院| 国产一区二区中文字幕| 在线观看www91| 久久亚洲精华国产精华液| 亚洲一级不卡视频| 国产成人丝袜美腿|