Skip to content
/ NoR Public

NoR is a Python-based mini-language designed for quickly and easily creating graphs for academic papers.

License

Notifications You must be signed in to change notification settings

Amemome/NoR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NoR (Node of Reasoning)

NoR Logo

License: MIT Python React

πŸ“ ν”„λ‘œμ νŠΈ μ†Œκ°œ

NoR은 ν•™μˆ  λ…Όλ¬Έμš© κ·Έλž˜ν”„λ₯Ό λΉ λ₯΄κ³  μ‰½κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ μ„€κ³„λœ Python 기반 λ―Έλ‹ˆ 슀크립트 μ–Έμ–΄μž…λ‹ˆλ‹€.

기쑴의 κ·Έλž˜ν”„ 생성 도ꡬ듀은 두 κ°€μ§€ 극단에 μžˆμ—ˆμŠ΅λ‹ˆλ‹€:

  • Excel: GUI 기반으둜 μ‰½μ§€λ§Œ μžλ™ν™”μ™€ 반볡 μž‘μ—…μ— μ·¨μ•½
  • Matplotlib: κ°•λ ₯ν•˜μ§€λ§Œ μ§„μž… μž₯벽이 λ†’κ³  문법이 볡작

NoR은 이 두 κ°€μ§€ μ‚¬μ΄μ˜ 쀑간점을 찾고자 ν•˜μ˜€μŠ΅λ‹ˆλ‹€. λˆ„κ΅¬λ‚˜ μ‰½κ²Œ μ ‘κ·Όν•  수 μžˆμœΌλ©΄μ„œλ„, μ½”λ“œ 기반으둜 μœ μ—°ν•˜κ²Œ κ·Έλž˜ν”„λ₯Ό 생성할 수 μžˆλŠ” κ°„λ‹¨ν•˜κ³  직관적인 ν•œκ΅­μ–΄ 슀크립트 μ–Έμ–΄λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

πŸ‘₯ νŒ€ μ†Œκ°œ

  • νŒ€λͺ…: NoR Team
  • 멀버:
    • λ₯˜μ§€μ„± - μ–Έμ–΄ 처리 μ—”μ§„ 개발 및 연동, 문법 μ •μ˜
    • μ΅œν˜„κ²½ - ν”„λ‘ νŠΈμ—”λ“œ 개발 및 연동, 문법 μ •μ˜
    • 이운길 - κ·Έλž˜ν”„ μ‹œκ°ν™” μ—”μ§„ 개발

✨ μ£Όμš” κΈ°λŠ₯

  • 직관적인 ν•œκ΅­μ–΄ 문법

    • κ·Έλž˜ν”„μƒμ„± "λ‚΄ κ·Έλž˜ν”„"와 같은 직관적인 λͺ…λ Ήμ–΄λ‘œ μ‰½κ²Œ κ·Έλž˜ν”„ 생성
    • λ³΅μž‘ν•œ μ„€μ • 없이도 μ›ν•˜λŠ” κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€
  • λ‹€μ–‘ν•œ κ·Έλž˜ν”„ 지원

    • Line, Bar, Scatter λ“± μ£Όμš” κ·Έλž˜ν”„ μœ ν˜• 지원
    • 각 κ·Έλž˜ν”„λ§ˆλ‹€ μ „μš© ν•¨μˆ˜λ₯Ό 톡해 μ‰½κ²Œ 생성 κ°€λŠ₯
  • μ‰¬μš΄ μ˜΅μ…˜ μ‘°μ •

    • 제λͺ©, κΈ€κΌ΄, 크기 등을 λͺ…λ Ήμ–΄λ‘œ 자유둭게 μ„€μ •
    • ν•œκΈ€ 색상 이름 지원 (예: "λΉ¨κ°•", "νŒŒλž‘")
  • μ‹€μ‹œκ°„ κ²°κ³Ό 확인

    • λͺ…λ Ήμ–΄ μ‹€ν–‰ μ¦‰μ‹œ κ²°κ³Όλ₯Ό 확인할 수 μžˆλŠ” ꡬ쑰
    • 디버그 λͺ¨λ“œλ‘œ μƒμ„Έν•œ 둜그 확인 κ°€λŠ₯

πŸŽ₯ 데λͺ¨ μ˜μƒ

데λͺ¨ μ˜μƒ 보기

πŸ—οΈ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

NoR μ‹œμŠ€ν…œμ€ 크게 μ„Έ κ°€μ§€ μΆ•μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€:

  1. GUI (React + Tailwind)

    • μ½”λ“œ 에디터: NoRScript λͺ…λ Ήμ–΄ μž…λ ₯
    • μ‹€ν–‰ κ²°κ³Ό μ°½: κ·Έλž˜ν”„ μ‹œκ°ν™”
    • 둜그 및 좜λ ₯ ν™”λ©΄: μ–Έμ–΄ 처리 κ΄€λ ¨ 둜그
  2. μ–Έμ–΄ 처리 (Lang)

    • ꡬ문 뢄석 (Parsing)
    • 의미 뢄석 (Semantic Analysis)
    • μ‹€ν–‰ (Execution)
  3. κ·Έλž˜ν”„ 생성 (Graph)

    • Matplotlib 기반 μ‹œκ°ν™”
    • λ‹€μ–‘ν•œ κ·Έλž˜ν”„ μœ ν˜• 지원
    • ν•œκΈ€ 색상 및 μŠ€νƒ€μΌ 지원

πŸš€ ν–₯ν›„ λ°œμ „ λ°©ν–₯

  • CSV 데이터 μžλ™ νŒŒμ‹± 및 λ³€μˆ˜λͺ… μžλ™ 등둝
  • λͺ…λ Ήμ–΄ μžλ™μ™„μ„± 및 μΆ”μ²œ κΈ°λŠ₯
  • μ‹€ν–‰ 이λ ₯ μ €μž₯ 및 즐겨찾기
  • κ·Έλž˜ν”„ 이미지 λ‹€μš΄λ‘œλ“œ 및 곡유 κΈ°λŠ₯
  • μ›Ή 배포 및 μ ‘κ·Όμ„± κ°œμ„ 

πŸ“¦ μ„€μΉ˜ 및 μ‚¬μš©λ²•

# μ €μž₯μ†Œ 클둠
git clone https://github.com/your-username/nor.git

# μ˜μ‘΄μ„± μ„€μΉ˜
pip install -r requirements.txt

# μ‹€ν–‰
python main.py

🀝 κΈ°μ—¬ 방법

  1. 이슈λ₯Ό μƒμ„±ν•˜κ±°λ‚˜ κΈ°μ‘΄ 이슈λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.
  2. 브랜치λ₯Ό μƒμ„±ν•˜κ³  μž‘μ—…ν•©λ‹ˆλ‹€.
  3. PR을 μƒμ„±ν•˜μ—¬ κΈ°μ—¬ν•©λ‹ˆλ‹€.

πŸ“„ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€ ν•˜μ— λ°°ν¬λ©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ LICENSE νŒŒμΌμ„ μ°Έμ‘°ν•˜μ„Έμš”.

NoR

NoR is a Python-based mini-language designed for quickly and easily creating graphs for academic papers. NoR은 ν•™μˆ  λ…Όλ¬Έμš© κ·Έλž˜ν”„λ₯Ό λΉ λ₯΄κ³  μ‰½κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ μ„€κ³„λœ Python 기반 λ―Έλ‹ˆ 슀크립트 μ–Έμ–΄μž…λ‹ˆλ‹€.

디렉토리 ꡬ쑰

/NoR
β”œβ”€β”€ cli/        # CLI μ‹€ν–‰κΈ° (μ»€λ§¨λ“œλΌμΈ)
β”œβ”€β”€ core/       # 곡톡 인터프리터/뢄석 둜직
β”œβ”€β”€ docs/       # ν”„λ‘œμ νŠΈ λ¬Έμ„œ
β”œβ”€β”€ gui/        # GUI (ν”„λ‘ νŠΈ + FastAPI μ„œλ²„)
β”œβ”€β”€ lang/       # μ–΄νœ˜ 뢄석, νŒŒμ„œ, 문법 μ •μ˜
β”œβ”€β”€ pyproject.toml
β”œβ”€β”€ uv.lock
└── README.md

- `core/`: CLI와 GUI λͺ¨λ‘μ—μ„œ κ³΅μœ ν•˜λŠ” **해석기 둜직**이 λ“€μ–΄ μžˆμŠ΅λ‹ˆλ‹€. ꡬ쑰가 ν™•μž₯λ˜λ©΄μ„œ 생긴 핡심 λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€.
- `lang/`: νŒŒμ„œ, 문법, 토큰 μ •μ˜ λ“± μ–Έμ–΄μ˜ 핡심 ꡬ성 μš”μ†Œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
- `gui/`: λ°±μ—”λ“œ (`FastAPI`)와 ν”„λ‘ νŠΈμ—”λ“œ (`React.js`)κ°€ ν•¨κ»˜ μžˆλŠ” λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€. `api_server.py`κ°€ HTTP APIλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
- `cli/`: CLI μ§„μž…μ μž…λ‹ˆλ‹€. GUI 없이 μ‹€ν–‰ μ‹œ μ‚¬μš©ν•©λ‹ˆλ‹€.

# ν”„λ‘œμ νŠΈ μ‹€ν–‰

> ν•΄λ‹Ή ν”„λ‘œμ νŠΈλŠ” python3, uv, Node.js ν™˜κ²½μ΄ ν•„μš”ν•©λ‹ˆλ‹€.  
- python3을 μ‚¬μš©ν•  수 μžˆλŠ” ν™˜κ²½μ„ λ§Œλ“€μ–΄μ£Όμ„Έμš”.
- uvλ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” ν™˜κ²½μ„ λ§Œλ“€μ–΄μ£Όμ„Έμš”.
- nodeλ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” ν™˜κ²½μ„ λ§Œλ“€μ–΄μ£Όμ„Έμš”.

1. λ ˆν¬μ§€ν† λ¦¬ 클둠 및 ν™˜κ²½ μ€€λΉ„

```bash
git clone <repo_url>
cd NoR
  1. .python-version에 λͺ…μ‹œλœ 파이썬 μ„€μΉ˜ λ˜λŠ” pyenv둜 μ„€μΉ˜

  2. κ°€μƒν™˜κ²½ 생성 및 ν™œμ„±ν™”

uv venv   # κ°€μƒν™˜κ²½ 생성
activate  # PowerShell or Bash λ“±μ—μ„œ ν™œμ„±ν™”

GUI μ‹€ν–‰

# λ°±μ—”λ“œ μ‹€ν–‰ (루트 λ””λ ‰ν† λ¦¬μ—μ„œ)
python -m gui.api_server

# ν”„λ‘ νŠΈμ—”λ“œ μ‹€ν–‰ (gui λ””λ ‰ν† λ¦¬μ—μ„œ)
cd gui
npm install
npm run dev

CLI μ‹€ν–‰

루트 λ””λ ‰ν† λ¦¬μ—μ„œ

python -m cli.nor_cli <script_file> --debug

debug μ˜΅μ…˜μ€ 더 λ§Žμ€ 정보λ₯Ό λ‘œκ·Έμ— μ œκ³΅ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ:

python -m cli.nor_cli test_scripts/dot_plot.nor

νŒ¨ν‚€μ§€ 관리 (uv)

μƒˆλ‘œμš΄ νŒ¨ν‚€μ§€λ₯Ό ν”„λ‘œμ νŠΈμ— μΆ”κ°€ν•˜κ±°λ‚˜ κΈ°μ‘΄ νŒ¨ν‚€μ§€λ₯Ό μ—…λ°μ΄νŠΈ/μ œκ±°ν•  λ•ŒλŠ” λ‹€μŒ 절차λ₯Ό λ”°λ₯΄μ„Έμš”. λͺ¨λ“  νŒ¨ν‚€μ§€ κ΄€λ ¨ μž‘μ—…μ€ κ°€μƒν™˜κ²½μ΄ ν™œμ„±ν™”λœ μƒνƒœμ—μ„œ μ§„ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μƒˆλ‘œμš΄ νŒ¨ν‚€μ§€λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ κΈ°μ‘΄ νŒ¨ν‚€μ§€λ₯Ό μˆ˜μ •ν•  λ•ŒλŠ” λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ„Έμš”:

uv pip install <νŒ¨ν‚€μ§€λͺ…>
uv pip uninstall <νŒ¨ν‚€μ§€λͺ…>
uv sync

λ₯Ό μ‚¬μš©ν•˜λ©΄ λͺ¨λ“  λ³€κ²½ 사항은 pyproject.tomlκ³Ό uv.lock에 λ°˜μ˜λ©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ μ†Œκ°œ μ˜μƒ

NoR ν”„λ‘œμ νŠΈ μ†Œκ°œ

ν”„λ‘œμ νŠΈ λ¬Έμ„œ

μžμ„Έν•œ ν”„λ‘œμ νŠΈ λ¬Έμ„œλŠ” λ…Έμ…˜ νŽ˜μ΄μ§€μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯

  • ν•œκΈ€ 기반의 직관적인 문법
  • λ³΅μž‘ν•œ μ„€μ • 없이 κ³ ν’ˆμ§ˆ κ·Έλž˜ν”„ 생성
  • matplotlib, seaborn λ“± κ°•λ ₯ν•œ μ‹œκ°ν™” 라이브러리 ν™œμš©

μ„€μΉ˜ 방법

# μ €μž₯μ†Œ 클둠
git clone https://github.com/your-username/nor.git

# μ˜μ‘΄μ„± μ„€μΉ˜
uv venv
uv pip install -r requirements.txt

μ‚¬μš© μ˜ˆμ‹œ

# ν•œκΈ€ 슀크립트둜 κ·Έλž˜ν”„ 생성
그리기([1, 2, 3, 4], [1, 4, 9, 16])
제λͺ©μ„€μ •("제곱 ν•¨μˆ˜")
좕이름섀정("xμΆ•", "yμΆ•")
μ €μž₯("κ·Έλž˜ν”„.png")

λΌμ΄μ„ μŠ€

MIT License

κΈ°μ—¬ 방법

  1. 이슈 생성
  2. 브랜치 생성 (git checkout -b feature/amazing-feature)
  3. 변경사항 컀밋 (git commit -m 'Add some amazing feature')
  4. 브랜치 ν‘Έμ‹œ (git push origin feature/amazing-feature)
  5. Pull Request 생성

νŒ€μ›

  • μ΅œν˜„κ²½ (32224802) - GUI 섀계 및 ν”„λ‘œμ νŠΈ λ¬Έμ„œν™”
  • 이운길 (32237627) - κ·Έλž˜ν”„ μ—”μ§„ κ΅¬ν˜„ 및 ν…ŒμŠ€νŠΈ
  • λ₯˜μ§€μ„± (32241484) - νŒŒμ„œ 및 μ–Έμ–΄ 섀계, GitHub 초기 μ„ΈνŒ…

About

NoR is a Python-based mini-language designed for quickly and easily creating graphs for academic papers.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •