<李>

命令/ProjectCmd:项目定义指令

<李>

常见/字符:字符识别辅助类

<李>

常见/令牌:组合文本识别辅助类

<李>

服务/ICodingService:代码生成服务接口

<李>

服务/iCodingContext:代码生成上下文

<李>

服务/iCodingState:状态模式下的服务状态

<李>

服务/iCmdRunner:定义指令执行器接口,具体执行拟走责任链模式以便扩展

<李>

服务/tInitialState:默认的服务状态

命令/ProjectCmd.go

项目定义指令

 package  project_cmd
  
  import  (
  “errors"
  “fmt"
  “学习/gooop/spring/autogen/command"
  “学习/gooop/spring/autogen/common"
  “os"
  “strings"
  )//,ProjectCmd  defines  a  project  with  name 以及dir
  type  ProjectCmd  struct  {
  name 字符串
  dir 字符串
  }//,ProjectCmdBuilder  parses  cli  input 以及creates  a  ProjectCmd 实例
  type  ProjectCmdBuilder  int
  
  const  gProjectCmdPrefix =,“project “
  var  gErrorInvalidProjectCmd =, errors.New (“invalid  project  cmd")
  
  func  (me  * ProjectCmd),字符串(),string  {
  return  fmt.Sprintf (“project  % s  % s",, me.name,, me.dir)
  }
  
  func  (me  * ProjectCmd),应用(ctx  command.ICmdContext), error  {
  恐慌(“implements  me")
  }
  
  func  (me  * ProjectCmdBuilder),构建(line 字符串),(错误,,command.ICmd), {
  if  ! common.Tokens.MatchString(线,,gProjectCmdPrefix), {
  return 零,零
  }
  
  时间=line  strings.TrimSpace ((len (gProjectCmdPrefix):)行)
  b, name :=, common.Tokens.MatchIdentifier(线)
  if  ! b , {
  return  gErrorInvalidProjectCmd nil
  }
  
  时间=line 线(len(名称):)
  b, spaces :=, common.Tokens.MatchSpaces(线)
  if  ! b , {
  return  gErrorInvalidProjectCmd nil
  }
  
  时间=line 线(len(空间):)
  b, dir :=, common.Tokens.MatchDir(线)
  if  ! b , {
  return  gErrorInvalidProjectCmd nil
  }
  _,e :=, os.Stat (dir)
  if  e  !=, nil  {
  return  e, nil
  }
  
  return  nil,,, ProjectCmd{名字的不同之处是,dir }
  }

常见/Chars.go

字符识别辅助类

 package 常见
  
  
  type  tChars  int
  
  var  Chars =,新(tChars)
  
  func  (me  * tChars), IsSpace (it 符文),bool  {
  switch  it  {
  & # 39;case  & # 39;:
  return 真正的
  case  & # 39; \ t # 39;:
  return 真正的
  case  & # 39; \ " # 39;:
  return 真正的
  case  & # 39; \ n # 39;:
  return 真正的
  }
  
  return 假
  }
  
  
  func  (me  * tChars), Is09 (it 符文),bool  {
  return  it 祝辞=,& # 39;0 & # 39;,,,,it  & lt;=, & # 39; 9 & # 39;
  }
  
  func  (me  * tChars), Is19 (it 符文),bool  {
  return  it 祝辞=,& # 39;1 & # 39;,,,,it  & lt;=, & # 39; 9 & # 39;
  }
  
  func  (me  * tChars),胰岛(it 符文),bool  {
  return  (it 祝辞=,& # 39;一个# 39;,,,,it  & lt;=, & # 39; z # 39;), | |, (it 祝辞=,& # 39;一个# 39;,,,,it  & lt;=, & # 39; z # 39;)
  }
  
  func  (me  * tChars), IsUnderscore (it 符文),bool  {
  return  it ==, & # 39; _ # 39;
  }
  
  func  (me  * tChars), IsLB (it 符文),bool  {
  return  it ==, & # 39; (& # 39;
  }
  
  func  (me  * tChars), IsRB (it 符文),bool  {
  return  it ==, & # 39;) & # 39;
  }
  
  func  (me  * tChars), IsChar (it 符文,args…,符文),bool  {
  for  _ v :=, range  args  {
  if  v ==, it  {
  return 真正的
  }
  }
  return 假
  }
  
  func  (me  * tChars), IsSQuote (it 符文),bool  {
  return  me.IsChar (,, & # 39; \ & # 39; & # 39;)
  }
  
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null