Add JVM part for calculator sample

Simple CLI Kotlin/JVM application making use of Kotlin parser library.
Fix #1222
This commit is contained in:
Svyatoslav Scherbina
2018-01-19 15:42:43 +03:00
committed by SvyatoslavScherbina
parent 60046abda0
commit cf5e6dac80
4 changed files with 65 additions and 1 deletions
+15 -1
View File
@@ -23,10 +23,24 @@ The sample consists of:
framework by invoking Gradle from custom "Run Script" build phase, and this
framework is imported into the Xcode project.
## Using the same code with Kotlin/JVM
The library can also be compiled to a `.jar` by Kotlin/JVM compiler with Gradle.
Just run from the [sample root dir](../):
```
./gradlew calculator:jar
```
This will generate a `calculator.jar` in `build/libs/`.
There is also simple Kotlin/JVM CLI app available in `jvmCliApp` subdirectory.
To build and run it, use
```
./gradlew calculator:jvmCliApp:run
```
To build the distribution:
```
./gradlew calculator:jvmCliApp:distZip
```
(the result will be available as
`jvmCliApp/build/distributions/KotlinCalculator.zip`)
+24
View File
@@ -0,0 +1,24 @@
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
apply plugin: 'application'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib"
compile project.parent
}
applicationName = "KotlinCalculator"
mainClassName = 'org.konan.calculator.JvmCliKt'
run {
args "2 + 2"
}
@@ -0,0 +1,25 @@
package org.konan.calculator
import org.konan.arithmeticparser.*
fun main(args: Array<String>) {
val expression = if (args.isNotEmpty()) {
args.first().also {
println(it)
}
} else {
println("Enter an expression:")
readLine()!!
}
val result = parseAndCompute(expression)
val computed = result.expression
if (computed != null) {
println(" = $computed")
} else {
println(" = ${result.partialExpression}")
result.remainder?.let {
println("Unable to parse suffix: $it")
}
}
}
+1
View File
@@ -1,6 +1,7 @@
// NOTE: If a new sample uses only platform libs,
// please add it into the 'buildSamplesWithPlatfromLibs' task in build.gradle.
include ':calculator'
include ':calculator:jvmCliApp'
include ':csvparser'
include ':gitchurn'
include ':globalState'