Compare commits

..

3 commits

Author SHA1 Message Date
550fba6f0b parser
Some checks are pending
CI / Julia 1.6 - ubuntu-latest - x64 (push) Waiting to run
CI / Julia 1.7 - ubuntu-latest - x64 (push) Waiting to run
CI / Julia pre - ubuntu-latest - x64 (push) Waiting to run
2025-01-21 23:48:51 +08:00
41eeaa459d Files generated by PkgTemplates
PkgTemplates version: 0.7.53
2025-01-21 23:48:51 +08:00
dffcb60dc7 Initial commit 2025-01-21 23:48:08 +08:00
13 changed files with 220 additions and 1 deletions

7
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,7 @@
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/" # Location of package manifests
schedule:
interval: "weekly"

41
.github/workflows/CI.yml vendored Normal file
View file

@ -0,0 +1,41 @@
name: CI
on:
push:
branches:
- main
tags: ['*']
pull_request:
workflow_dispatch:
concurrency:
# Skip intermediate builds: always.
# Cancel intermediate builds: only if it is a pull request build.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
jobs:
test:
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
timeout-minutes: 60
permissions: # needed to allow julia-actions/cache to proactively delete old caches that it has created
actions: write
contents: read
strategy:
fail-fast: false
matrix:
version:
- '1.6'
- '1.7'
- 'pre'
os:
- ubuntu-latest
arch:
- x64
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
- uses: julia-actions/julia-runtest@v1

16
.github/workflows/CompatHelper.yml vendored Normal file
View file

@ -0,0 +1,16 @@
name: CompatHelper
on:
schedule:
- cron: 0 0 * * *
workflow_dispatch:
jobs:
CompatHelper:
runs-on: ubuntu-latest
steps:
- name: Pkg.add("CompatHelper")
run: julia -e 'using Pkg; Pkg.add("CompatHelper")'
- name: CompatHelper.main()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMPATHELPER_PRIV: ${{ secrets.DOCUMENTER_KEY }}
run: julia -e 'using CompatHelper; CompatHelper.main()'

31
.github/workflows/TagBot.yml vendored Normal file
View file

@ -0,0 +1,31 @@
name: TagBot
on:
issue_comment:
types:
- created
workflow_dispatch:
inputs:
lookback:
default: "3"
permissions:
actions: read
checks: read
contents: write
deployments: read
issues: read
discussions: read
packages: read
pages: read
pull-requests: read
repository-projects: read
security-events: read
statuses: read
jobs:
TagBot:
if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot'
runs-on: ubuntu-latest
steps:
- uses: JuliaRegistries/TagBot@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
ssh: ${{ secrets.DOCUMENTER_KEY }}

4
.gitignore vendored
View file

@ -1,3 +1,4 @@
<<<<<<< HEAD
# ---> Julia
# Files generated by invoking Julia with --code-coverage
*.jl.cov
@ -24,3 +25,6 @@ docs/site/
# environment.
Manifest.toml
=======
/Manifest.toml
>>>>>>> b96a94c (Files generated by PkgTemplates)

0
LICENSE Normal file
View file

18
Project.toml Normal file
View file

@ -0,0 +1,18 @@
name = "uahgi"
uuid = "de6df24e-a306-4916-96f6-3ab6c7568c2f"
authors = ["Tan Kian-ting <chenjt30@gmail.com> and contributors"]
version = "1.0.0-DEV"
[deps]
ArgParse = "c7e460c6-2fb9-53a9-8c5b-16f535851c63"
ParserCombinator = "fae87a5f-d1ad-5cf0-8f61-c941e1580b46"
libharu_jll = "d4e8948d-4b7e-5538-9d15-404f6f0a9070"
[compat]
julia = "1.6.7"
[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[targets]
test = ["Test"]

View file

@ -1,3 +1,7 @@
# uahgi
<<<<<<< HEAD
another experimential typesetting tool
=======
[![Build Status](https://github.com/yoxem/uahgi.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/yoxem/uahgi.jl/actions/workflows/CI.yml?query=branch%3Amain)
>>>>>>> b96a94c (Files generated by PkgTemplates)

7
example/ex1 copy.ug Normal file
View file

@ -0,0 +1,7 @@
%123%@foo text%456 7% %
8 9 10%
{@foo}
{@foo|@bar}

2
example/ex1.ug Normal file
View file

@ -0,0 +1,2 @@
@foo
{@foo|@bar|12\|}

52
src/parsing.jl Normal file
View file

@ -0,0 +1,52 @@
module Parsing
using ParserCombinator
abstract type Node end
struct ID<:Node val end
struct SEQ<:Node val end # like (a b c) in scheme
struct ELE<:Node val end #an element in a seq
struct ESC_CHAR<:Node val end # character preceded by escape char "\"
#=
grammar rules of uahgi
=#
comment = p"\%[^%]+\%"
newline = p"(\r?\n)"
space = p"[ \t]"
id_name = p"[_a-zA-Z][_0-9a-zA-Z]*" > ID
id = E"@" + id_name
char = p"[^ \n\r\t\\]"#[1:2,:?]
# chars should be preceded by "\" are \, {, }, |, @, %
esc_char = p"[\{\|\}\@\%]" > ESC_CHAR
esc_combined = E"\\" + esc_char
#=
seq = (foo x1 x2 " ")
=> {@foo|x1|x2| }
=#
char_and_combined = char | esc_combined
seq_item = id | Repeat(char_and_combined) |> ELE
seq_item_rest = E"|" + seq_item
seq_inner = seq_item + (seq_item_rest)[0:end] |> SEQ
seq = E"{" + seq_inner + E"}"
part = seq | comment | space | newline | id | char
all = Repeat(part) + Eos()
function parse(input)
print(input)
b = parse_one(input, all)
print("\n" * string(b) * "\n")
#print(parse_one(, Pattern(r".b.")))
end
# Write your package code here.
#export dog
#dog = 1.2
end

31
src/uahgi.jl Normal file
View file

@ -0,0 +1,31 @@
module uahgi
include("./parsing.jl")
using .Parsing
using ArgParse
function parse_commandline()
#= please see:
https://carlobaldassi.github.io/ArgParse.jl/stable/
=#
s = ArgParseSettings()
@add_arg_table! s begin
"FILE"
help = "the file path to be converted."
required = true
end
return parse_args(s)
end
function main()
parsed_args = parse_commandline()
file_path = parsed_args["FILE"]
file_content = open(f->read(f, String), file_path)
Parsing.parse(file_content)
end
main()
end

6
test/runtests.jl Normal file
View file

@ -0,0 +1,6 @@
using uahgi
using Test
@testset "uahgi.jl" begin
# Write your tests here.
end