首页 > 解决方案 > Ragel:如何通过匹配不同的表达式来返回不同的值

问题描述

我正在寻找一个通过匹配不同表达式的输入字符串来返回不同整数值的函数。

这是它可能的方式,但语法:

package main

func MatchType(data []byte) int {
  %% machine scanner;
  %% write data;

  cs, p, pe, eof := 0, 0, len(data), len(data)

  _ = eof

  %%{
    main := (  0..120 '-first-' ) @{ return 1 } ;
    main := ( 0..120 '-second-' ) @{ return 2 } ;

    write init;
    write exec;
  }%%

  return -1
}

有人可以请教吗?

标签: regexstate-machineregular-languageragel

解决方案


  %%{

    action a1 { return 8; }
    action a2 { return 10; }

    main := ( 0..120 '-first-' $s1  | 0..120 '-second-' $s2 ) @{ return 0 } ;

    write init;
    write exec;
  }%%

推荐阅读