Compare commits
3 commits
c90465c65b
...
550fba6f0b
Author | SHA1 | Date | |
---|---|---|---|
550fba6f0b | |||
41eeaa459d | |||
dffcb60dc7 |
13 changed files with 220 additions and 1 deletions
7
.github/dependabot.yml
vendored
Normal file
7
.github/dependabot.yml
vendored
Normal 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
41
.github/workflows/CI.yml
vendored
Normal 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
16
.github/workflows/CompatHelper.yml
vendored
Normal 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
31
.github/workflows/TagBot.yml
vendored
Normal 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
4
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
# ---> Julia
|
# ---> Julia
|
||||||
# Files generated by invoking Julia with --code-coverage
|
# Files generated by invoking Julia with --code-coverage
|
||||||
*.jl.cov
|
*.jl.cov
|
||||||
|
@ -24,3 +25,6 @@ docs/site/
|
||||||
# environment.
|
# environment.
|
||||||
Manifest.toml
|
Manifest.toml
|
||||||
|
|
||||||
|
=======
|
||||||
|
/Manifest.toml
|
||||||
|
>>>>>>> b96a94c (Files generated by PkgTemplates)
|
||||||
|
|
0
LICENSE
Normal file
0
LICENSE
Normal file
18
Project.toml
Normal file
18
Project.toml
Normal 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"]
|
|
@ -1,3 +1,7 @@
|
||||||
# uahgi
|
# uahgi
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
another experimential typesetting tool
|
another experimential typesetting tool
|
||||||
|
=======
|
||||||
|
[](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
7
example/ex1 copy.ug
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
%123%@foo text%456 7% %
|
||||||
|
|
||||||
|
8 9 10%
|
||||||
|
|
||||||
|
{@foo}
|
||||||
|
|
||||||
|
{@foo|@bar}
|
2
example/ex1.ug
Normal file
2
example/ex1.ug
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
@foo
|
||||||
|
{@foo|@bar|12\|}
|
52
src/parsing.jl
Normal file
52
src/parsing.jl
Normal 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
31
src/uahgi.jl
Normal 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
6
test/runtests.jl
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
using uahgi
|
||||||
|
using Test
|
||||||
|
|
||||||
|
@testset "uahgi.jl" begin
|
||||||
|
# Write your tests here.
|
||||||
|
end
|
Loading…
Reference in a new issue