mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
[Add Language] Jolie (#3574)
* added support for Jolie language * added support for Jolie language * added samples for Jolie
This commit is contained in:
37
samples/Jolie/common.iol
Normal file
37
samples/Jolie/common.iol
Normal file
@@ -0,0 +1,37 @@
|
||||
include "types/Binding.iol"
|
||||
|
||||
constants {
|
||||
Location_Exam = "socket://localhost:8000"
|
||||
}
|
||||
|
||||
type StartExamRequest:void {
|
||||
.examName:string
|
||||
.studentName:string
|
||||
.student:Binding
|
||||
}
|
||||
|
||||
type MakeQuestionRequest:void {
|
||||
.question:string
|
||||
.examName:string
|
||||
.studentName:string
|
||||
}
|
||||
|
||||
type DecisionMessage:void {
|
||||
.studentName:string
|
||||
.examName:string
|
||||
}
|
||||
|
||||
interface ExamInterface {
|
||||
OneWay:
|
||||
startExam(StartExamRequest),
|
||||
pass(DecisionMessage), fail(DecisionMessage)
|
||||
RequestResponse:
|
||||
makeQuestion(MakeQuestionRequest)(int)
|
||||
}
|
||||
|
||||
interface StudentInterface {
|
||||
OneWay:
|
||||
sendMessage(string)
|
||||
RequestResponse:
|
||||
makeQuestion(MakeQuestionRequest)(int)
|
||||
}
|
||||
39
samples/Jolie/exam.ol
Normal file
39
samples/Jolie/exam.ol
Normal file
@@ -0,0 +1,39 @@
|
||||
include "common.iol"
|
||||
|
||||
cset {
|
||||
studentName:
|
||||
StartExamRequest.studentName
|
||||
DecisionMessage.studentName
|
||||
MakeQuestionRequest.studentName,
|
||||
examName:
|
||||
StartExamRequest.examName
|
||||
DecisionMessage.examName
|
||||
MakeQuestionRequest.examName
|
||||
}
|
||||
|
||||
execution { concurrent }
|
||||
|
||||
outputPort Student {
|
||||
Interfaces: StudentInterface
|
||||
}
|
||||
|
||||
inputPort ExamInput {
|
||||
Location: Location_Exam
|
||||
Protocol: sodep
|
||||
Interfaces: ExamInterface
|
||||
}
|
||||
|
||||
main
|
||||
{
|
||||
startExam( examRequest );
|
||||
Student << examRequest.student;
|
||||
makeQuestion( question )( answer ) {
|
||||
makeQuestion@Student( question )( answer )
|
||||
};
|
||||
[ pass( message ) ] {
|
||||
sendMessage@Student( "You passed!" )
|
||||
}
|
||||
[ fail( message ) ] {
|
||||
sendMessage@Student( "You failed!" )
|
||||
}
|
||||
}
|
||||
26
samples/Jolie/examiner.ol
Normal file
26
samples/Jolie/examiner.ol
Normal file
@@ -0,0 +1,26 @@
|
||||
include "common.iol"
|
||||
include "ui/swing_ui.iol"
|
||||
include "console.iol"
|
||||
|
||||
outputPort Exam {
|
||||
Location: Location_Exam
|
||||
Protocol: sodep
|
||||
Interfaces: ExamInterface
|
||||
}
|
||||
|
||||
main
|
||||
{
|
||||
question.studentName = "John";
|
||||
question.examName = "SPLG";
|
||||
question.question = "Random question";
|
||||
makeQuestion@Exam( question )( answer );
|
||||
showYesNoQuestionDialog@SwingUI( "Do you want to accept answer " + answer + " ?" )( decision );
|
||||
|
||||
message.studentName = "John";
|
||||
message.examName = "SPLG";
|
||||
if ( decision == 0 ) {
|
||||
pass@Exam( message )
|
||||
} else {
|
||||
fail@Exam( message )
|
||||
}
|
||||
}
|
||||
84
samples/Jolie/hanoi.ol
Normal file
84
samples/Jolie/hanoi.ol
Normal file
@@ -0,0 +1,84 @@
|
||||
// https://github.com/jolie/website/blob/master/docs/documentation/locations/code/local.ol
|
||||
|
||||
include "runtime.iol"
|
||||
include "string_utils.iol"
|
||||
|
||||
type HanoiRequest: void{
|
||||
.src: string
|
||||
.aux: string
|
||||
.dst: string
|
||||
.n: int
|
||||
.sid?: string
|
||||
}
|
||||
|
||||
type HanoiReponse: void {
|
||||
.move?: string
|
||||
}
|
||||
|
||||
interface LocalOperations{
|
||||
RequestResponse:
|
||||
hanoiSolver( HanoiRequest )( HanoiReponse )
|
||||
}
|
||||
|
||||
interface ExternalOperations{
|
||||
RequestResponse:
|
||||
hanoi( HanoiRequest )( string )
|
||||
}
|
||||
|
||||
outputPort Self{
|
||||
Interfaces: LocalOperations
|
||||
}
|
||||
|
||||
inputPort Self {
|
||||
Location: "local"
|
||||
Interfaces: LocalOperations
|
||||
}
|
||||
|
||||
inputPort PowerService {
|
||||
Location: "socket://localhost:8000"
|
||||
Protocol: http{
|
||||
.format = "html"
|
||||
}
|
||||
Interfaces: ExternalOperations
|
||||
}
|
||||
|
||||
execution { concurrent }
|
||||
|
||||
init
|
||||
{
|
||||
getLocalLocation@Runtime()( Self.location )
|
||||
}
|
||||
|
||||
main
|
||||
{
|
||||
[ hanoi( request )( response ){
|
||||
getRandomUUID@StringUtils()(request.sid);
|
||||
hanoiSolver@Self( request )( subRes );
|
||||
response = subRes.move
|
||||
}]{ nullProcess }
|
||||
|
||||
[ hanoiSolver( request )( response ){
|
||||
if ( request.n > 0 ){
|
||||
subReq.n = request.n;
|
||||
subReq.n--;
|
||||
with( request ){
|
||||
subReq.aux = .dst;
|
||||
subReq.dst = .aux;
|
||||
subReq.src = .src;
|
||||
subReq.sid = .sid
|
||||
};
|
||||
hanoiSolver@Self( subReq )( response );
|
||||
response.move += "<br>" +
|
||||
++global.counters.(request.sid) +
|
||||
") Move from " + request.src +
|
||||
" to " + request.dst + ";";
|
||||
with ( request ){
|
||||
subReq.src = .aux;
|
||||
subReq.aux = .src;
|
||||
subReq.dst = .dst
|
||||
};
|
||||
hanoiSolver@Self( subReq )( subRes );
|
||||
response.move += subRes.move
|
||||
}
|
||||
}]{ nullProcess }
|
||||
}
|
||||
29
samples/Jolie/student.ol
Normal file
29
samples/Jolie/student.ol
Normal file
@@ -0,0 +1,29 @@
|
||||
include "common.iol"
|
||||
include "ui/swing_ui.iol"
|
||||
include "console.iol"
|
||||
|
||||
outputPort Exam {
|
||||
Location: Location_Exam
|
||||
Protocol: sodep
|
||||
Interfaces: ExamInterface
|
||||
}
|
||||
|
||||
inputPort StudentInput {
|
||||
Location: "socket://localhost:8001/"
|
||||
Protocol: sodep
|
||||
Interfaces: StudentInterface
|
||||
}
|
||||
|
||||
main
|
||||
{
|
||||
request.studentName = "John";
|
||||
request.examName = "SPLG";
|
||||
request.student.location = "socket://localhost:8001/";
|
||||
request.student.protocol = "sodep";
|
||||
startExam@Exam( request );
|
||||
makeQuestion( question )( answer ) {
|
||||
showYesNoQuestionDialog@SwingUI( question.question )( answer )
|
||||
};
|
||||
sendMessage( message );
|
||||
println@Console( message )()
|
||||
}
|
||||
Reference in New Issue
Block a user