From 4ec2277903bbc011174c2f540e76c2267f7f25b6 Mon Sep 17 00:00:00 2001 From: Julia Longtin Date: Mon, 15 Jul 2019 19:13:11 +0100 Subject: [PATCH] Add a lexer, and use it to parse whitespace before the first statement. --- Examples/example10.escad | 2 ++ Graphics/Implicit/ExtOpenScad/Parser/Statement.hs | 6 +++++- implicit.cabal | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Examples/example10.escad b/Examples/example10.escad index bbca399..dd317f6 100644 --- a/Examples/example10.escad +++ b/Examples/example10.escad @@ -1,2 +1,4 @@ // Example10.escad -- map!. echo(map(cos, [0, pi/2, pi])); +cube(10); +translate1 (10) cube(10); \ No newline at end of file diff --git a/Graphics/Implicit/ExtOpenScad/Parser/Statement.hs b/Graphics/Implicit/ExtOpenScad/Parser/Statement.hs index e3fc745..10b89c7 100644 --- a/Graphics/Implicit/ExtOpenScad/Parser/Statement.hs +++ b/Graphics/Implicit/ExtOpenScad/Parser/Statement.hs @@ -31,6 +31,9 @@ import Graphics.Implicit.ExtOpenScad.Parser.Util (genSpace, tryMany, stringGS, ( -- the top level of the expression parser. import Graphics.Implicit.ExtOpenScad.Parser.Expr (expr0) +-- The lexer. +import Graphics.Implicit.ExtOpenScad.Parser.Lexer (whiteSpace) + -- Let us use the old syntax when defining Names. pattern Name :: String -> GIED.Pattern pattern Name n = GIED.Name (Symbol n) @@ -39,8 +42,9 @@ parseProgram :: SourceName -> String -> Either ParseError [StatementI] parseProgram name s = parse program name s where program :: ParsecT String u Identity [StatementI] program = do + _ <- whiteSpace sts <- many computation - eof + _ <- eof return sts -- | A computable block of code in our openscad-like programming language. diff --git a/implicit.cabal b/implicit.cabal index 5c349d6..465aea4 100644 --- a/implicit.cabal +++ b/implicit.cabal @@ -87,6 +87,7 @@ Library Graphics.Implicit.ObjectUtil.GetImplicit2 Graphics.Implicit.ObjectUtil.GetImplicit3 Graphics.Implicit.ExtOpenScad.Default + Graphics.Implicit.ExtOpenScad.Parser.Lexer Graphics.Implicit.ExtOpenScad.Parser.Util Graphics.Implicit.ExtOpenScad.Eval.Statement Graphics.Implicit.ExtOpenScad.Eval.Expr