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:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -836,3 +836,6 @@
|
|||||||
[submodule "vendor/grammars/marko-tmbundle"]
|
[submodule "vendor/grammars/marko-tmbundle"]
|
||||||
path = vendor/grammars/marko-tmbundle
|
path = vendor/grammars/marko-tmbundle
|
||||||
url = https://github.com/marko-js/marko-tmbundle
|
url = https://github.com/marko-js/marko-tmbundle
|
||||||
|
[submodule "vendor/grammars/language-jolie"]
|
||||||
|
path = vendor/grammars/language-jolie
|
||||||
|
url = https://github.com/fmontesi/language-jolie
|
||||||
|
|||||||
@@ -410,6 +410,8 @@ vendor/grammars/language-jison:
|
|||||||
- source.jison
|
- source.jison
|
||||||
- source.jisonlex
|
- source.jisonlex
|
||||||
- source.jisonlex-injection
|
- source.jisonlex-injection
|
||||||
|
vendor/grammars/language-jolie:
|
||||||
|
- source.jolie
|
||||||
vendor/grammars/language-jsoniq:
|
vendor/grammars/language-jsoniq:
|
||||||
- source.jq
|
- source.jq
|
||||||
- source.xq
|
- source.xq
|
||||||
|
|||||||
@@ -2041,6 +2041,17 @@ Jison Lex:
|
|||||||
tm_scope: source.jisonlex
|
tm_scope: source.jisonlex
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
language_id: 406395330
|
language_id: 406395330
|
||||||
|
Jolie:
|
||||||
|
type: programming
|
||||||
|
extensions:
|
||||||
|
- ".ol"
|
||||||
|
- ".iol"
|
||||||
|
interpreters:
|
||||||
|
- jolie
|
||||||
|
color: "#843179"
|
||||||
|
ace_mode: text
|
||||||
|
tm_scope: source.jolie
|
||||||
|
language_id: 998078858
|
||||||
Julia:
|
Julia:
|
||||||
type: programming
|
type: programming
|
||||||
extensions:
|
extensions:
|
||||||
|
|||||||
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 )()
|
||||||
|
}
|
||||||
6
vendor/README.md
vendored
6
vendor/README.md
vendored
@@ -165,6 +165,8 @@ This is a list of grammars that Linguist selects to provide syntax highlighting
|
|||||||
- **Java Server Pages:** [textmate/java.tmbundle](https://github.com/textmate/java.tmbundle)
|
- **Java Server Pages:** [textmate/java.tmbundle](https://github.com/textmate/java.tmbundle)
|
||||||
- **JavaScript:** [atom/language-javascript](https://github.com/atom/language-javascript)
|
- **JavaScript:** [atom/language-javascript](https://github.com/atom/language-javascript)
|
||||||
- **JFlex:** [jflex-de/jflex.tmbundle](https://github.com/jflex-de/jflex.tmbundle)
|
- **JFlex:** [jflex-de/jflex.tmbundle](https://github.com/jflex-de/jflex.tmbundle)
|
||||||
|
- **Jison:** [cdibbs/language-jison](https://github.com/cdibbs/language-jison)
|
||||||
|
- **Jison Lex:** [cdibbs/language-jison](https://github.com/cdibbs/language-jison)
|
||||||
- **JSON:** [textmate/json.tmbundle](https://github.com/textmate/json.tmbundle)
|
- **JSON:** [textmate/json.tmbundle](https://github.com/textmate/json.tmbundle)
|
||||||
- **JSON5:** [atom/language-javascript](https://github.com/atom/language-javascript)
|
- **JSON5:** [atom/language-javascript](https://github.com/atom/language-javascript)
|
||||||
- **JSONiq:** [wcandillon/language-jsoniq](https://github.com/wcandillon/language-jsoniq)
|
- **JSONiq:** [wcandillon/language-jsoniq](https://github.com/wcandillon/language-jsoniq)
|
||||||
@@ -270,8 +272,8 @@ This is a list of grammars that Linguist selects to provide syntax highlighting
|
|||||||
- **Puppet:** [russCloak/SublimePuppet](https://github.com/russCloak/SublimePuppet)
|
- **Puppet:** [russCloak/SublimePuppet](https://github.com/russCloak/SublimePuppet)
|
||||||
- **PureScript:** [purescript-contrib/atom-language-purescript](https://github.com/purescript-contrib/atom-language-purescript)
|
- **PureScript:** [purescript-contrib/atom-language-purescript](https://github.com/purescript-contrib/atom-language-purescript)
|
||||||
- **Python:** [MagicStack/MagicPython](https://github.com/MagicStack/MagicPython)
|
- **Python:** [MagicStack/MagicPython](https://github.com/MagicStack/MagicPython)
|
||||||
- **Python console:** [atom/language-python](https://github.com/atom/language-python)
|
- **Python console:** [MagicStack/MagicPython](https://github.com/MagicStack/MagicPython)
|
||||||
- **Python traceback:** [atom/language-python](https://github.com/atom/language-python)
|
- **Python traceback:** [MagicStack/MagicPython](https://github.com/MagicStack/MagicPython)
|
||||||
- **QMake:** [textmate/cpp-qt.tmbundle](https://github.com/textmate/cpp-qt.tmbundle)
|
- **QMake:** [textmate/cpp-qt.tmbundle](https://github.com/textmate/cpp-qt.tmbundle)
|
||||||
- **QML:** [skozlovf/Sublime-QML](https://github.com/skozlovf/Sublime-QML)
|
- **QML:** [skozlovf/Sublime-QML](https://github.com/skozlovf/Sublime-QML)
|
||||||
- **R:** [textmate/r.tmbundle](https://github.com/textmate/r.tmbundle)
|
- **R:** [textmate/r.tmbundle](https://github.com/textmate/r.tmbundle)
|
||||||
|
|||||||
1
vendor/grammars/language-jolie
vendored
Submodule
1
vendor/grammars/language-jolie
vendored
Submodule
Submodule vendor/grammars/language-jolie added at c0415b5dac
26
vendor/licenses/grammar/language-jolie.txt
vendored
Normal file
26
vendor/licenses/grammar/language-jolie.txt
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: language-jolie
|
||||||
|
license: mit
|
||||||
|
---
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 Fabrizio Montesi <famontesi@gmail.com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
Reference in New Issue
Block a user