One에 오신 것을 환영합니다!
오픈 소스, 자체 호스팅, 부트스트랩 시스템 프로그래밍 언어로
안정적이고 효율적인 소프트웨어를 구축합니다.
Max, John 및 기타 오픈 소스 기여자.
- 단순성
- 컴파일러
- 출력 파일 생성 기능(x86_64, i386)
- 시스템 프로그래밍 언어
- 중급
- 네트워크 및 API 프로그래밍
- 웹 프로그래밍 지원(향후)
- CSS와 HTML 모두에 해당하는 코드의 자동 생성. 따라서 웹사이트를 개발하기 위해 '하나의' 언어 이상을 배울 필요가 없습니다.
- CSS에서 변수를 사용하여 데이터베이스에서 색상이나 크기를 얻을 수 있습니다.
- 페이지 결과 자동 축소
- 성능 및 고속
- 인라인 어셈블리 코드 지원(향후)
- 일반 모드에서 사용자 시스템에 특정 라이브러리 및 도구가 필요하지 않음(향후)
- 일반 모드에서 외부 런타임 라이브러리가 필요하지 않음(향후)
- 컴파일을 위해 외부 컴파일러가 필요하지 않음(향후)
'One' 언어의 문법은 여기에서 볼 수 있습니다.
- 렉서/파서(대부분)
- AST 트리
- VM
- 코드 생성기(LLVM-C에서 영감을 얻음)
- 런타임 라이브러리 개발 및 기능 추가
- 언어에 대한 웹 프레임워크 설계
-
One
언어로 컴파일러 재작성
main {
ret 0
}
C로 변환:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
global_argc = argc;
global_argv = argv;
return (int) 0;
}
i32 main {
ret 10
}
C로 변환:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
global_argc = argc;
global_argv = argv;
return (int) 10;
}
main {
string in = "Hello, World!"
__ in
return in.length
}
C로 변환:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
global_argc = argc;
global_argv = argv;
char *in = "Hello, World!";
printf("%s\n", in);
return (int) strlen(in);
}
또 다른 초안:
import web
home {
_ "Hi, Welcome"
}
error {
headers.add('HTTP/1.0 404 Not Found')
headers.add('content-type: text/html;charset=utf-8')
_ "<h1>404></h1>"
}
main {
if system.args.length === 2 {
port = system.args[1]
} else {
port = 8080;
}
web.route.add("/", home)
web.route.add("*", error)
web.listen(port)
return 0
}
또 다른 초안:
error {
headers.add('HTTP/1.0 404 Not Found')
headers.add('content-type: text/html;charset=utf-8')
_ `<!doctype html><html><head><title>Error 404</title><meta charset="utf-8"></head><body><h1>404></h1></body></html>`
}
vs
error {
headers.add('HTTP/1.0 404 Not Found')
headers.add('content-type: text/html;charset=utf-8')
page {
title: 'Error 404'
label {
type: 'h1'
_ "Not found!"
}
}
}
main:
// __ "Hello, World!"
_ "Hello,"
io.write(' ')
io.write("World")
__ '!'
end
@start
customName:
_ "Hello, World!\n"
end
@start
void app:
__ "Hello, World!"
end
@start
int customName:
_ "Hello, World!\n"
return 0
end
이 아키텍처는 웹 사이트 및 기본 소프트웨어용으로만 설계되었습니다. 앞으로 모바일 앱(네이티브)에서도 사용할 수 있습니다.
모바일 구조는 아직 완성되지 않았으며 더 많은 주의와 생각이 필요합니다.
언어 작동을 보여주는 예:
title "Name - Main"
description "Descriptions"
/*
Keyword tag not used in the software, only on the web.
*/
keyword "keywords"
style {
* {
margin 0
padding 0
}
header {
width "100%"
height "auto"
}
list {
color "red"
}
list item {
display "inline"
padding "10px"
background "yellow"
}
}
header {
list {
item {
_ "Home"
}
item {
_ "About"
}
item {
_ "Contact Us"
}
}
}
CSS/HTML/JS 기반으로 변환:
<html>
<head>
<title>Name - Main</title>
<meta name="description" content="Descriptions" />
<meta name="keyword" content="keywords" />
<style>
* {
margin: 0;
padding: 0;
}
header {
width 100%;
height: auto;
}
ul {
color: red;
}
ul li {
display: inline;
padding: 10px;
background: yellow;
}
</style>
</head>
<body>
<header>
<ul>
<li>Home</li>
<li>About</li>
<li>Contact Us</li>
</ul>
</header>
</body>
</html>
언어 학습을 시작하려면 이 링크를 참조하세요.
- GNU / Linux
- Windows
- macOS (Not complete)
- BSD
버그 보고서, 기능 요청, 문서 개선 등을 포함한 모든 종류의 기여를 환영합니다. 질문을 하거나 토론을 열려면 문제를 만들거나 One Discord Server에 가입하세요.
GitHub에서 pull 요청하는 방법에 익숙하지 않다면 이 가이드.
기여하기로 결정하셨다면 먼저 여기 가이드라인을 읽어주세요.
❤️ Patreon에서 기부를 통해 'One' 개발에 도움을 줄 수도 있습니다.
모든 기고자에게 감사드립니다!!
이 프로젝트의 개발에 기여하고 싶다면 [email protected]으로 메일을 보내주십시오.
One
은 GNU General Public License v3.0에 따라 출시되었습니다. 저장소에 포함된 라이센스 파일의 용어를 참조하십시오.