⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extra.jam

📁 C++的一个好库。。。现在很流行
💻 JAM
字号:

import type ;
import generators ;
import "class" : new ;

type.register WHL : whl ;
type.register DLP : dlp ;
type.register WHL_LR0 : lr0 ;
type.register WD : wd ;

generators.register-standard extra.whale : WHL : CPP WHL_LR0 H H(%_symbols) ;
generators.register-standard extra.dolphin : DLP : CPP ;
generators.register-standard extra.wd : WD : WHL(%_parser) DLP(%_lexer) ;

class wd-to-cpp : generator
{
    rule __init__ ( * : * : * )
    {
        generator.__init__ $(1) : $(2) : $(3) ;
    }
    
    rule run ( project name ? : property-set : source )
    {
        local new-sources ;
        if ! [ $(source).type ] in WHL DLP
        {            
            local r1 = [ generators.construct $(project) $(name) 
              : WHL : $(property-set) : $(source) ] ;
            local r2 = [ generators.construct $(project) $(name) 
              : DLP : $(property-set) : $(source) ] ;
            
            new-sources = [ sequence.unique $(r1[2-]) $(r2[2-]) ] ;
        }
        else
        {
            new-sources = $(source) ;
        }
                    
        local result ;
        for local i in $(new-sources) 
        {
            local t = [ generators.construct $(project) $(name) : CPP 
              : $(property-set) : $(i) ] ;          
            result += $(t[2-]) ;
        }
        return $(result) ;
    }        
}
generators.override extra.wd-to-cpp : extra.whale ;
generators.override extra.wd-to-cpp : extra.dolphin ;


generators.register [ new wd-to-cpp extra.wd-to-cpp : : CPP ] ;
    
rule whale ( targets * : sources * : properties * )
{
}

actions whale 
{
    echo "Whale consuming " $(>)
    touch $(<)
}

rule dolphin ( targets * : source * : properties * )
{
}

actions dolphin
{    
    echo "Dolphin consuming" $(>)
    touch $(<)        
}

rule wd ( targets * : source * : properties * )
{
}

actions wd
{    
    echo "WD consuming" $(>)
    touch $(<)        
}

rule x ( target * : source * : properties * )
{
}


actions x 
{
    echo "X: source is " $(>)
    touch $(<)
}

rule x_pro ( target * : source * : properties * )
{
}


actions x_pro
{
    echo "X_PRO: source is " $(>)
    touch $(<)
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -