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

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

?? creator.pm

?? 一個開源的網絡開發庫ACE
?? PM
字號:
package Creator;

# ************************************************************
# Description   : Base class for workspace and project creators
# Author        : Chad Elliott
# Create Date   : 5/13/2002
# ************************************************************

# ************************************************************
# Pragmas
# ************************************************************

use strict;
use FileHandle;
use File::Basename;

use Parser;

use vars qw(@ISA);
@ISA = qw(Parser);

# ************************************************************
# Subroutine Section
# ************************************************************

sub new {
  my($class)    = shift;
  my($global)   = shift;
  my($inc)      = shift;
  my($template) = shift;
  my($ti)       = shift;
  my($relative) = shift;
  my($addtemp)  = shift;
  my($addproj)  = shift;
  my($progress) = shift;
  my($type)     = shift;
  my($self)     = Parser::new($class);

  $self->{'relative'}      = $relative;
  $self->{'template'}      = $template;
  $self->{'ti'}            = $ti;
  $self->{'global_cfg'}    = $global;
  $self->{'grammar_type'}  = $type;
  $self->{'type_check'}    = $type . '_defined';
  $self->{'global_read'}   = 0;
  $self->{'include_path'}  = $inc;
  $self->{'current_input'} = '';
  $self->{'progress'}      = $progress;
  $self->{'addtemp'}       = $addtemp;
  $self->{'addproj'}       = $addproj;

  return $self;
}


sub generate_default_input {
  my($self) = shift;
  $self->parse_line(undef, "$self->{'grammar_type'} {");
  $self->parse_line(undef, '}');
  return 1;
}


sub parse_file {
  my($self)       = shift;
  my($input)      = shift;
  my($typecheck)  = $self->{'type_check'};
  my($oline)      = $self->line_number();

  ## Read the input file and get the last line number
  my($status, $errorString) = $self->read_file($input);
  my($linenumber) = $self->line_number();

  if (!$status) {
    print STDERR "$input: line $linenumber: $errorString\n";
  }
  elsif ($status && $self->{$typecheck}) {
    ## If we are at the end of the file and the type we are looking at
    ## is still defined, then we have an error
    print STDERR "$input: line $linenumber: ERROR: Did not " .
                 "find the end of the $self->{'grammar_type'}\n";
    $status = 0;
  }
  $self->line_number($oline);

  return $status;
}


sub generate {
  my($self)   = shift;
  my($input)  = shift;
  my($status) = 1;

  ## Allow subclasses to reset values before
  ## each call to generate().
  $self->reset_values();

  ## Read the global configuration file
  if (!$self->{'global_read'}) {
    $status = $self->read_global_configuration();
    $self->{'global_read'} = 1;
  }

  if ($status) {
    $self->{'current_input'} = $input;

    ## An empty input file name says that we
    ## should generate a default input file and use that
    if ($input eq '') {
      $status = $self->generate_default_input();
    }
    else {
      $status = $self->parse_file($input);
    }
  }

  return $status;
}


sub parse_assignment {
  my($self)   = shift;
  my($line)   = shift;
  my($values) = shift;
  my($status) = 1;

  if ($line =~ /^(\w+)\s*=\s*(.*)?/) {
    my($name)  = lc($1);
    my($value) = $2;
    push(@$values, 'assignment', $name, $value);
  }
  elsif ($line =~ /^(\w+)\s*\+=\s*(.*)?/) {
    my($name)  = lc($1);
    my($value) = $2;
    push(@$values, 'assign_add', $name, $value);
  }
  elsif ($line =~ /^(\w+)\s*\-=\s*(.*)?/) {
    my($name)  = lc($1);
    my($value) = $2;
    push(@$values, 'assign_sub', $name, $value);
  }
  else {
    $status = 0;
  }

  return $status;
}


sub parse_known {
  my($self)        = shift;
  my($line)        = shift;
  my($status)      = 1;
  my($errorString) = '';
  my($type)        = $self->{'grammar_type'};
  my(@values)      = ();
  my($typecheck)   = $self->{'type_check'};

  ##
  ## Each regexp that looks for the '{' looks for it at the
  ## end of the line.  It is purposely this way to decrease
  ## the amount of extra lines in each file.  This
  ## allows for the most compact file as human readably
  ## possible.
  ##
  if ($line eq '') {
  }
  elsif ($line =~ /^$type\s*(\([^\)]+\))?\s*(:.*)?\s*{$/) {
    my($name)    = $1;
    my($parents) = $2;
    if ($self->{$typecheck}) {
      $errorString = "ERROR: Did not find the end of the $type";
      $status = 0;
    }
    else {
      if (defined $parents) {
        my(@parents) = ();
        foreach my $parent (split(/[:,]/, $parents)) {
          $parent =~ s/^\s+//;
          $parent =~ s/\s+$//;
          if ($parent ne '') {
            push(@parents, $parent);
          }
        }
        if (!defined $parents[0]) {
          ## The : was used, but no parents followed.  This
          ## is an error.
          $errorString = 'ERROR: No parents listed';
          $status = 0;
        }
        $parents = \@parents;
      }
      push(@values, $type, $name, $parents);
    }
  }
  elsif ($line =~ /^}$/) {
    if ($self->{$typecheck}) {
      push(@values, $type, $line);
    }
    else {
      $errorString = "ERROR: Did not find the beginning of the $type";
      $status = 0;
    }
  }
  elsif (!$self->{$typecheck}) {
    $errorString = "ERROR: No $type was defined";
    $status = 0;
  }
  elsif ($self->parse_assignment($line, \@values)) {
    ## If this returns true, then we've found an assignment
  }
  elsif ($line =~ /^(\w+)\s*(\([^\)]+\))?\s*{$/) {
    my($comp) = lc($1);
    my($name) = $2;

    if (defined $name) {
      $name =~ s/^\(\s*//;
      $name =~ s/\s*\)$//;
    }
    else {
      $name = 'default';
    }
    push(@values, 'component', $comp, $name);
  }
  else {
    $errorString = "ERROR: Unrecognized line: $line";
    $status = -1;
  }

  return $status, $errorString, @values;
}


sub base_directory {
  my($self) = shift;
  return basename($self->getcwd());
}


sub generate_default_file_list {
  my($self)  = shift;
  my($dir)   = shift;
  my($dh)    = new FileHandle();
  my(@files) = ();

  if (!defined $dir) {
    $dir = '.';
  }

  if (opendir($dh, $dir)) {
    @files = grep(!/^\.\.?$/, readdir($dh));
    if ($self->sort_files()) {
      @files = sort { $self->file_sorter($a, $b) } @files;
    }

    ## Prefix each file name with the directory
    ## only if it's not .
    if ($dir ne '.') {
      for(my $i = 0; $i <= $#files; $i++) {
        $files[$i] = "$dir/$files[$i]";
      }
    }

    closedir($dh);
  }
  return @files;
}


sub get_global_cfg {
  my($self) = shift;
  return $self->{'global_cfg'};
}


sub get_include_path {
  my($self) = shift;
  return $self->{'include_path'};
}


sub search_include_path {
  my($self)     = shift;
  my($file)     = shift;
  my($found)    = undef;
  my($includes) = $self->get_include_path();
  foreach my $include (@$includes) {
    if (-r "$include/$file") {
      $found = "$include/$file";
      last;
    }
  }
  return $found;
}


sub get_template_override {
  my($self) = shift;
  return $self->{'template'};
}


sub get_ti_override {
  my($self) = shift;
  return $self->{'ti'};
}


sub get_relative {
  my($self) = shift;
  return $self->{'relative'};
}


sub windows_crlf {
  #my($self) = shift;
  if ($^O eq 'MSWin32' || $^O eq 'cygwin') {
    return "\n";
  }
  else {
    return "\r\n";
  }
}


sub transform_file_name {
  my($self) = shift;
  my($name) = shift;

  $name =~ s/\s/_/g;
  return $name;
}


sub get_current_input {
  my($self) = shift;
  return $self->{'current_input'};
}


sub get_progress_callback {
  my($self) = shift;
  return $self->{'progress'};
}


sub get_addtemp {
  my($self) = shift;
  return $self->{'addtemp'};
}


sub get_addproj {
  my($self) = shift;
  return $self->{'addproj'};
}


# ************************************************************
# Virtual Methods To Be Overridden
# ************************************************************

sub crlf {
  #my($self) = shift;
  return "\n";
}


sub reset_values {
  #my($self) = shift;
}


sub sort_files {
  #my($self) = shift;
  return 1;
}


sub file_sorter {
  my($self)  = shift;
  my($left)  = shift;
  my($right) = shift;
  return $left cmp $right;
}


sub read_global_configuration {
  #my($self)  = shift;
  #my($input) = shift;
  return 1;
}


1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩综合在线| 一本到不卡免费一区二区| 欧美视频在线观看一区二区| 中文字幕av一区二区三区| 精品亚洲成av人在线观看| 欧美军同video69gay| 蜜臀av一区二区三区| 久久综合久久久久88| 色婷婷综合视频在线观看| 香蕉久久一区二区不卡无毒影院 | 欧美va亚洲va香蕉在线| 成人一区二区在线观看| 亚洲成a人片在线观看中文| 久久亚洲欧美国产精品乐播 | 亚洲国产成人自拍| 国产91高潮流白浆在线麻豆| 一区二区欧美视频| 久久久国产综合精品女国产盗摄| 色88888久久久久久影院野外| 国产福利91精品一区| 日韩影院免费视频| 一区二区三区蜜桃| 久久九九久久九九| 日韩一级二级三级| 欧美人与性动xxxx| 51精品国自产在线| 日韩精品在线看片z| 欧美日韩高清一区二区| 在线观看国产日韩| 欧美日韩亚洲综合一区| 欧美日韩高清一区| 2023国产精华国产精品| 久久久精品tv| 亚洲日本电影在线| 日韩在线卡一卡二| 国内国产精品久久| 成人综合在线观看| 91丝袜高跟美女视频| 一本色道久久加勒比精品| 色哟哟一区二区三区| 在线看国产一区| 欧美乱熟臀69xxxxxx| 久久久精品免费网站| 亚洲视频在线一区二区| 亚洲黄色尤物视频| 亚洲444eee在线观看| 久久精品国产精品亚洲红杏| 国产乱码精品一品二品| 91免费小视频| 久久久亚洲午夜电影| 一区二区三区精品在线| 狠狠色丁香九九婷婷综合五月| 91亚洲精华国产精华精华液| 91精品国产综合久久久久久漫画 | 久久精品欧美日韩精品| 亚洲色图在线视频| 青青草国产成人99久久| 99热这里都是精品| 日韩午夜小视频| 1024亚洲合集| 成人性视频免费网站| 欧美一区二区三区在线电影| 亚洲一区二区欧美日韩| 一本色道久久综合亚洲精品按摩| 久久久精品中文字幕麻豆发布| 日韩成人免费在线| 欧美日韩成人在线| 亚洲制服欧美中文字幕中文字幕| 亚洲一二三区在线观看| 一本到高清视频免费精品| 亚洲另类色综合网站| 91免费国产在线观看| 中文字幕中文字幕一区| 99精品在线免费| 亚洲综合久久av| 欧美在线免费播放| 亚洲综合免费观看高清完整版在线| 色婷婷综合久久| 午夜激情久久久| 亚洲精品一线二线三线| 懂色av一区二区在线播放| 专区另类欧美日韩| 在线影院国内精品| 日本欧美在线看| 久久久99久久精品欧美| www.在线成人| 视频一区视频二区中文| 国产日本欧美一区二区| 色婷婷精品大视频在线蜜桃视频| 日韩精品电影一区亚洲| 久久久久久久久伊人| 91玉足脚交白嫩脚丫在线播放| 天堂成人免费av电影一区| 亚洲国产精品国自产拍av| 欧美日韩国产大片| 成人福利电影精品一区二区在线观看| 亚洲美女少妇撒尿| 国产精品视频一二三区| 欧美成人性福生活免费看| 91传媒视频在线播放| 成人免费视频网站在线观看| 午夜精品在线看| 亚洲一区日韩精品中文字幕| 精品免费日韩av| 欧美日韩不卡一区二区| 色综合久久88色综合天天免费| 国产成人小视频| 国产乱码精品一区二区三区五月婷| 一区二区三区av电影| 最新日韩av在线| 亚洲欧洲色图综合| 国产精品欧美综合在线| 国产亚洲欧美一区在线观看| 日韩免费观看高清完整版| 日韩一区国产二区欧美三区| 欧美日韩成人在线| 日韩女同互慰一区二区| 精品国内片67194| 最新日韩av在线| 亚洲综合一二三区| 日本欧美久久久久免费播放网| 三级精品在线观看| 蜜桃av一区二区| 国产99久久久精品| 日本韩国一区二区三区视频| 欧美欧美欧美欧美| 国产亚洲综合在线| 伊人性伊人情综合网| 日本免费新一区视频| 精品无人码麻豆乱码1区2区| 国产.欧美.日韩| 3d动漫精品啪啪一区二区竹菊| 精品国内二区三区| 中文字幕第一区二区| 奇米色777欧美一区二区| 高清日韩电视剧大全免费| 欧美中文字幕不卡| 久久蜜桃av一区精品变态类天堂| 亚洲午夜一二三区视频| 国产精品一区二区三区四区| 在线播放/欧美激情| 中文字幕人成不卡一区| 美女精品一区二区| 在线播放日韩导航| 亚洲一区二区不卡免费| 色天天综合久久久久综合片| 久久精品一区蜜桃臀影院| 男女男精品视频| 欧美日精品一区视频| 亚洲人吸女人奶水| 9人人澡人人爽人人精品| 26uuu久久综合| 国产乱码精品一区二区三区av| 欧美精品一区二区三区在线播放 | 国产精品护士白丝一区av| 国产精品中文字幕一区二区三区| 日韩限制级电影在线观看| 毛片av一区二区| 精品国产免费久久| 99精品国产一区二区三区不卡| 国产精品久久免费看| 在线观看91精品国产入口| 午夜精品久久久| 欧美一区二区视频观看视频| 美女mm1313爽爽久久久蜜臀| 精品sm在线观看| 国产91综合一区在线观看| 亚洲欧美日韩电影| 91精品免费观看| av一区二区三区四区| 亚洲一二三四区不卡| 久久免费看少妇高潮| 欧美日韩一级视频| 国产精品一区二区在线播放| 自拍av一区二区三区| 久久久久国产精品麻豆ai换脸| 成人av先锋影音| 亚洲二区视频在线| 国产精品国产三级国产专播品爱网| 91看片淫黄大片一级在线观看| 日韩电影在线免费观看| 国产精品久久毛片| 日韩精品专区在线影院观看| 色狠狠av一区二区三区| 风间由美一区二区三区在线观看 | 香蕉久久夜色精品国产使用方法| 欧美成人精品3d动漫h| 欧美酷刑日本凌虐凌虐| 日本韩国欧美在线| 色激情天天射综合网| 99精品欧美一区二区三区小说| 国精产品一区一区三区mba桃花| 日韩高清一级片| 婷婷夜色潮精品综合在线| 亚洲自拍偷拍网站| 一个色综合网站| 亚洲成在人线在线播放| 亚洲1区2区3区4区| 日韩国产欧美三级| 紧缚捆绑精品一区二区|