public override void ExitRelativeExpression(WeatherRuleParser.RelativeExpressionContext context) { /* DAYBEFORETODAY:'昨天'; TODAY:'今天'; TOMORROW:'明天'; DAYAFTERTOMORROW:'后天'; */ DateTime whichDay = DateTime.Now; var tokenString = context.GetText(); if (tokenString == "昨天") whichDay = whichDay.AddDays(-1); else if (tokenString == "今天") ; else if (tokenString == "明天") whichDay = whichDay.AddDays(1); else if (tokenString == "后天") whichDay = whichDay.AddDays(1); else throw new NotSupportedException(); this.result.FromDate = whichDay; this.result.ToDate = whichDay; }
public override void ExitFixDayExpression(WeatherRuleParser.FixDayExpressionContext context) { var monthString=context.monthly().number().GetText(); var dayString = context.date().number().GetText(); int month = Utils.Parse2Int(monthString); int day = Utils.Parse2Int(dayString); DateTime date = new DateTime(DateTime.Now.Year, month, day); this.result.FromDate = date; this.result.ToDate = date; }
public static ParseResult Parse(string sentence) { Antlr4.Runtime.AntlrInputStream input = new Antlr4.Runtime.AntlrInputStream(sentence); WeatherRuleLexer lexer = new WeatherRuleLexer(input); Antlr4.Runtime.UnbufferedTokenStream tokens = new Antlr4.Runtime.UnbufferedTokenStream(lexer); WeatherRuleParser parser = new WeatherRuleParser(tokens); parser.RemoveErrorListeners(); var tree = parser.compileUnit(); ParseTreeWalker walker = new ParseTreeWalker(); WeatherListener lsn = new WeatherListener(); walker.Walk(lsn, tree); return lsn.Result; }
public override void ExitPositiveExpression(WeatherRuleParser.PositiveExpressionContext context) { // '这' number? '天' this.result.FromDate = DateTime.Now; var numToken = context.number(); if (numToken == null) { this.result.ToDate = DateTime.Now; return; } var numberString = numToken.GetText(); int day = Utils.Parse2Int(numberString); this.result.ToDate = DateTime.Now.AddDays(day); }
public override void ExitCity(WeatherRuleParser.CityContext context) { //在哪里 result.Where = context.GetText(); }