Skip to content

Commit

Permalink
1バイト文字とUnicodeの範囲を変更
Browse files Browse the repository at this point in the history
  • Loading branch information
okomeki committed Jan 13, 2023
1 parent 3e5c47f commit 76198d3
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 42 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
/target/
/target/
12 changes: 6 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<modelVersion>4.0.0</modelVersion>
<groupId>net.siisise</groupId>
<artifactId>softlib-abnf</artifactId>
<version>1.2.2</version>
<packaging>jar</packaging>
<name>SoftLibABNF</name>
<version>1.2.3</version>
<packaging>jar</packaging>
<description>Java ABNF parser CC</description>
<url>https://github.com/okomeki/SoftLib</url>
<licenses>
Expand Down Expand Up @@ -92,25 +92,25 @@
<dependency>
<groupId>net.siisise</groupId>
<artifactId>softlib</artifactId>
<version>1.1.8</version>
<version>[1.1.8,)</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.1</version>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.9.1</version>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.1</version>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/net/siisise/abnf/ABNF.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ static ABNF binlist(String binlist) {
}

/**
*
* 1文字 Unicodeふる
* @param ch 文字
* @return 文字と一致するABNF
*/
Expand All @@ -101,17 +101,17 @@ static ABNFbin bin(String str) {

/**
* (仮)
* @param b
* @return
* @param b バイト
* @return 1バイトのABNF
*/
static ABNFbin bin(byte b) {
return new ABNFbin(new byte[] {b});
}

/**
* (仮)
* @param bin
* @return
* @param bin バイト列
* @return バイト列のABNF
*/
static ABNFbin bin(byte[] bin) {
return new ABNFbin(bin);
Expand All @@ -122,17 +122,17 @@ static ABNFbin bin(byte[] bin) {
* utf-8 をデコードするので0x80以上はバイト列と同じではない
* @param min 最小文字コード 0 - 0x10ffff
* @param max 最大文字コード 0 - 0x10ffff
* @return
* @return 文字のABNF
*/
static ABNFrange range(int min, int max) {
return new ABNFrange(min, max);
}

/**
* 1バイト比較
* 1バイト比較.
* @param min 最小コード 0x00 - 0xff
* @param max 最大コード 0x00 - 0xff
* @return
* @return バイトのABNF
*/
static ABNFbinRange binRange(int min, int max) {
return new ABNFbinRange(min, max);
Expand Down
24 changes: 0 additions & 24 deletions src/main/java/net/siisise/abnf/ABNFbin.java
Original file line number Diff line number Diff line change
Expand Up @@ -103,29 +103,6 @@ public int ch() {
int ch = CodePoint.utf8(src); // 1文字デコード
return src.length() == 0 ? ch : -1;
}
/*
static ABNF range = ABNF5234.ALPHA.or1(ABNF5234.DIGIT);
static ABNF esc = ABNF5234.DQUOTE.or1(ABNF.range(0x0, 0x1f), ABNF.bin(0x7f));
private String toJavaString(byte[] d) {
ReadableBlock bl = ReadableBlock.wrap(d);
StringBuilder sb = new StringBuilder();
sb.append('"');
while ( bl.length() > 0 ) {
ReadableBlock res = esc.is(bl);
if ( res != null) {
} else {
int cp = CodePoint.utf8(bl);
if ( cp >= 0 ) {
sb.appendCodePoint(cp);
}
}
}
sb.append('"');
return sb.toString();
}
*/

/**
* @return Javaっぽくする
Expand All @@ -145,7 +122,6 @@ public String toJava() {
src.append(",");
}
src.append(toJavaCh(d));
// src.append("0x").append(Integer.toHexString(((int)d) & 0xff).toUpperCase());
}
src.append("}");
}
Expand Down
16 changes: 15 additions & 1 deletion src/main/java/net/siisise/abnf/ABNFmap.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,31 @@ public class ABNFmap extends IsABNF {
private final List<Integer> map = new ArrayList<>();

public ABNFmap() {
name = "";
name = "()";
}

public ABNFmap(String val) {
ReadableBlock pac = ReadableBlock.wrap(val);
StringBuilder n = new StringBuilder();
n.append("( ");
while (pac.size() > 0) {
if ( n.length() > 2) {
n.append(" / ");
}
int ch = CodePoint.utf8(pac);
if (!map.contains(ch)) {
map.add(ch);
if ( (ch >= 0x20 && ch <= 0x7e && ch != 0x22) ) {
n.append('"');
n.append(ch);
n.append('"');
} else {
n.append(hex(ch));
}
}
}
n.append(" )");
name = n.toString();
}

@Override
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/net/siisise/abnf/ABNFor.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ public ABNFor(String name, String chlist) {
}
}

/**
* 名前をつくる.
* @param abnfs
* @return
*/
static String toName(BNF[] abnfs) {
StringBuilder sb = new StringBuilder();
//if ( list.length > 1) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/net/siisise/bnf/AbstractBNF.java
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ protected static <X> void mix(Match<X> ret, Match<X> sub) {
* @return っぽく
*/
protected String hex(int ch) {
if (ch < 0x100) {
if (ch < 0x80) { // 文字としては 0x80以降は4桁にしておきたい
return "%x" + Integer.toHexString(0x100 + ch).substring(1);
} else if (ch < 0x10000) {
return "%x" + Integer.toHexString(0x10000 + ch).substring(1);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/net/siisise/bnf/BNFCC.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public static BNFCC<BNF> abnf2bnf(BNFReg<BNF> up) {
/**
* ABNF用
* @param <E> BNFが無難
* @param up
* @param up 取り込む定義
* @param cc ABNF5234.REG など
* @return ABNFが使えるよ
*/
Expand Down

0 comments on commit 76198d3

Please sign in to comment.