From 90603a9bb5e000b4d82993a8050fa4648d812789 Mon Sep 17 00:00:00 2001 From: hellerve Date: Mon, 30 Apr 2018 16:33:57 +0200 Subject: [PATCH] parser: add simple parser and tests --- src/Phsyche.package/.filetree | 4 ++++ src/Phsyche.package/Phsyche.class/README.md | 1 + .../Phsyche.class/instance/parse..st | 4 ++++ src/Phsyche.package/Phsyche.class/properties.json | 14 ++++++++++++++ src/Phsyche.package/PhsycheTest.class/README.md | 0 .../PhsycheTest.class/instance/setUp.st | 3 +++ .../instance/testParseEmptyList.st | 3 +++ .../PhsycheTest.class/instance/testParseFloat.st | 3 +++ .../PhsycheTest.class/instance/testParseIsNull.st | 8 ++++++++ .../PhsycheTest.class/instance/testParseLambda.st | 5 +++++ .../PhsycheTest.class/instance/testParseSymbol.st | 3 +++ .../PhsycheTest.class/properties.json | 14 ++++++++++++++ src/Phsyche.package/monticello.meta/categories.st | 1 + .../monticello.meta/initializers.st | 0 src/Phsyche.package/monticello.meta/package | 1 + src/Phsyche.package/properties.json | 2 ++ 16 files changed, 66 insertions(+) create mode 100644 src/Phsyche.package/.filetree create mode 100644 src/Phsyche.package/Phsyche.class/README.md create mode 100644 src/Phsyche.package/Phsyche.class/instance/parse..st create mode 100644 src/Phsyche.package/Phsyche.class/properties.json create mode 100644 src/Phsyche.package/PhsycheTest.class/README.md create mode 100644 src/Phsyche.package/PhsycheTest.class/instance/setUp.st create mode 100644 src/Phsyche.package/PhsycheTest.class/instance/testParseEmptyList.st create mode 100644 src/Phsyche.package/PhsycheTest.class/instance/testParseFloat.st create mode 100644 src/Phsyche.package/PhsycheTest.class/instance/testParseIsNull.st create mode 100644 src/Phsyche.package/PhsycheTest.class/instance/testParseLambda.st create mode 100644 src/Phsyche.package/PhsycheTest.class/instance/testParseSymbol.st create mode 100644 src/Phsyche.package/PhsycheTest.class/properties.json create mode 100644 src/Phsyche.package/monticello.meta/categories.st create mode 100644 src/Phsyche.package/monticello.meta/initializers.st create mode 100644 src/Phsyche.package/monticello.meta/package create mode 100644 src/Phsyche.package/properties.json diff --git a/src/Phsyche.package/.filetree b/src/Phsyche.package/.filetree new file mode 100644 index 0000000..8998102 --- /dev/null +++ b/src/Phsyche.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/src/Phsyche.package/Phsyche.class/README.md b/src/Phsyche.package/Phsyche.class/README.md new file mode 100644 index 0000000..ac938b1 --- /dev/null +++ b/src/Phsyche.package/Phsyche.class/README.md @@ -0,0 +1 @@ +I’m a simple Lisp interpreter. \ No newline at end of file diff --git a/src/Phsyche.package/Phsyche.class/instance/parse..st b/src/Phsyche.package/Phsyche.class/instance/parse..st new file mode 100644 index 0000000..27613f8 --- /dev/null +++ b/src/Phsyche.package/Phsyche.class/instance/parse..st @@ -0,0 +1,4 @@ +as yet unclassified +parse: aProgramString + aProgramString ifEmpty: [ ^ #() ]. + ^ (Scanner new scanTokens: aProgramString) first \ No newline at end of file diff --git a/src/Phsyche.package/Phsyche.class/properties.json b/src/Phsyche.package/Phsyche.class/properties.json new file mode 100644 index 0000000..a877428 --- /dev/null +++ b/src/Phsyche.package/Phsyche.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Phsyche", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "VeitHeller 4/30/2018 16:32", + "instvars" : [ + "env" ], + "name" : "Phsyche", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/src/Phsyche.package/PhsycheTest.class/README.md b/src/Phsyche.package/PhsycheTest.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/src/Phsyche.package/PhsycheTest.class/instance/setUp.st b/src/Phsyche.package/PhsycheTest.class/instance/setUp.st new file mode 100644 index 0000000..a8934bc --- /dev/null +++ b/src/Phsyche.package/PhsycheTest.class/instance/setUp.st @@ -0,0 +1,3 @@ +tests +setUp + ph := Phsyche new \ No newline at end of file diff --git a/src/Phsyche.package/PhsycheTest.class/instance/testParseEmptyList.st b/src/Phsyche.package/PhsycheTest.class/instance/testParseEmptyList.st new file mode 100644 index 0000000..1e1c5c1 --- /dev/null +++ b/src/Phsyche.package/PhsycheTest.class/instance/testParseEmptyList.st @@ -0,0 +1,3 @@ +tests +testParseEmptyList + self assert: (ph parse: '()') equals: #() \ No newline at end of file diff --git a/src/Phsyche.package/PhsycheTest.class/instance/testParseFloat.st b/src/Phsyche.package/PhsycheTest.class/instance/testParseFloat.st new file mode 100644 index 0000000..5be7f58 --- /dev/null +++ b/src/Phsyche.package/PhsycheTest.class/instance/testParseFloat.st @@ -0,0 +1,3 @@ +tests +testParseFloat + self assert: (ph parse: '12.33') equals: 12.33 \ No newline at end of file diff --git a/src/Phsyche.package/PhsycheTest.class/instance/testParseIsNull.st b/src/Phsyche.package/PhsycheTest.class/instance/testParseIsNull.st new file mode 100644 index 0000000..6dcbd7e --- /dev/null +++ b/src/Phsyche.package/PhsycheTest.class/instance/testParseIsNull.st @@ -0,0 +1,8 @@ +tests +testParseIsNull + self + assert: (ph parse: '(isNull (cons (quote a) #()))') + equals: #(#isNull #(#cons #(#quote #a) #())). + self + assert: (ph parse: '(isNull (cons (quote a) ()))') + equals: #(#isNull #(#cons #(#quote #a) #())) \ No newline at end of file diff --git a/src/Phsyche.package/PhsycheTest.class/instance/testParseLambda.st b/src/Phsyche.package/PhsycheTest.class/instance/testParseLambda.st new file mode 100644 index 0000000..1e19864 --- /dev/null +++ b/src/Phsyche.package/PhsycheTest.class/instance/testParseLambda.st @@ -0,0 +1,5 @@ +tests +testParseLambda + self + assert: (ph parse: '(define squared (lambda (x) (* x x)))') + equals: #(#define #squared #(#lambda #(#x) #(* x x))) \ No newline at end of file diff --git a/src/Phsyche.package/PhsycheTest.class/instance/testParseSymbol.st b/src/Phsyche.package/PhsycheTest.class/instance/testParseSymbol.st new file mode 100644 index 0000000..c326dd3 --- /dev/null +++ b/src/Phsyche.package/PhsycheTest.class/instance/testParseSymbol.st @@ -0,0 +1,3 @@ +tests +testParseSymbol +self assert: (ph parse: 'r') equals: #r \ No newline at end of file diff --git a/src/Phsyche.package/PhsycheTest.class/properties.json b/src/Phsyche.package/PhsycheTest.class/properties.json new file mode 100644 index 0000000..59b1784 --- /dev/null +++ b/src/Phsyche.package/PhsycheTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Phsyche", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "ph" ], + "name" : "PhsycheTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/src/Phsyche.package/monticello.meta/categories.st b/src/Phsyche.package/monticello.meta/categories.st new file mode 100644 index 0000000..8da5326 --- /dev/null +++ b/src/Phsyche.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #Phsyche! diff --git a/src/Phsyche.package/monticello.meta/initializers.st b/src/Phsyche.package/monticello.meta/initializers.st new file mode 100644 index 0000000..e69de29 diff --git a/src/Phsyche.package/monticello.meta/package b/src/Phsyche.package/monticello.meta/package new file mode 100644 index 0000000..03fdb8e --- /dev/null +++ b/src/Phsyche.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Phsyche') \ No newline at end of file diff --git a/src/Phsyche.package/properties.json b/src/Phsyche.package/properties.json new file mode 100644 index 0000000..f037444 --- /dev/null +++ b/src/Phsyche.package/properties.json @@ -0,0 +1,2 @@ +{ + }