From 6270b7d8e4c5d7bb91c34f00a7a8f85db89bd33d Mon Sep 17 00:00:00 2001
From: Adela Vais <adela.vais99@gmail.com>
Date: Sat, 16 Jan 2021 15:20:09 +0200
Subject: [PATCH for Dlang support 3/3] d: examples: calc: remove Value from
 Lexer

The Symbol constructor does not use it, so it is easier to not use Value at all.

* examples/d/calc/calc.y: Here.
---
 examples/d/calc/calc.y | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/examples/d/calc/calc.y b/examples/d/calc/calc.y
index 09e871b3..8d0e1e6e 100644
--- a/examples/d/calc/calc.y
+++ b/examples/d/calc/calc.y
@@ -108,8 +108,6 @@ if (isInputRange!R && is(ElementType!R : dchar))
     stderr.writeln(loc.toString(), ": ", s);
   }
 
-  Value value_;
-
   Symbol yylex()
   {
     import std.uni : isWhite, isNumber;
@@ -128,6 +126,7 @@ if (isInputRange!R && is(ElementType!R : dchar))
     // Numbers.
     if (input.front.isNumber)
     {
+      int ival;
       int lenChars = 0;
       import std.compiler : version_minor;
       static if (version_minor >= 95)
@@ -137,14 +136,14 @@ if (isInputRange!R && is(ElementType!R : dchar))
         import std.typecons : Flag, Yes;
         import std.conv : parse;
         auto parsed = parse!(int, R, Yes.doCount)(input);
-        value_.ival = parsed.data;
+        ival = parsed.data;
         lenChars = cast(int) parsed.count;
       }
       else
       {
         auto copy = input;
         import std.conv : parse;
-        value.ival = input.parse!int;
+        ival = input.parse!int;
         while (!input.empty && copy.front != input.front)
         {
           lenChars++;
@@ -153,7 +152,7 @@ if (isInputRange!R && is(ElementType!R : dchar))
       }
       location.begin = location.end;
       location.end.column += lenChars;
-      return Symbol(TokenKind.NUM, value_.ival, location);
+      return Symbol(TokenKind.NUM, ival, location);
     }
 
     // Individual characters
-- 
2.17.1

